使用dynamic与DynamicJson处理动态组装对象

需求:有一个项目中,需要将一大串信息,组装成指定的Json字符串输出。

思考:如手动用for,foreach等循环自行拼接字符串,感觉好麻烦,而且可读性很差,也容易出错。

 

为了方便处理,想到了动态对象,并用Newtonsoft.Json.JsonConvert.SerializeObject()直接序列化为字符串,这样就避免了自己组装字符串的尴尬。

不想说太多了,直接上代码:

using Codeplex.Data;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;

namespace BadTree.Test
{
    public enum Gender
    {
        Boy = 1,
        Gril = 2,
    }
    public class DynamicTest
    {
        public static string Serialize()
        {
            List<dynamic> list = new List<dynamic>();
            dynamic item = new DynamicJson();
            item["Name"] = "Badtree";
            item["Age"] = 18;
            item["Gender"] = (int)Gender.Boy;

            list.Add(item);

            return JsonConvert.SerializeObject(list);
        }

        public static void Get(string jsonString)
        {
            JArray list = (JArray)JsonConvert.DeserializeObject(jsonString);
            JObject obj = (JObject)list[0];
            string name = obj.SelectToken("Name").ToString();
            int age = Convert.ToInt32(obj.SelectToken("Age"));
            Gender gender = obj.SelectToken("Gender").ToObject<Gender>();
        }
    }
}

DynamicJson 与 Newtonsoft.Json 需要在NuGet中自行获取;

如果需要返回的对象更复杂,可再自行组装。

 

posted on 2016-10-13 16:18  BadTree  阅读(479)  评论(0编辑  收藏  举报