需求:有一个项目中,需要将一大串信息,组装成指定的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中自行获取;
如果需要返回的对象更复杂,可再自行组装。