Json.NET匿名类型序列化



如何将一个字符串转换为JSON对象呢?如果先创建一个类的话,那就太累了。

var o = new
{
a = 1,
b = "Hello,World!",
c = new[] { 1,2,3 },
d = new Dictionary<string,int> { { "x",1 },{ "y",2 } }
};

var json = JsonConvert.SerializeObject(o);

现在json是一个字符串。

第一种做法(匿名类):

var anonymous = new { a = 0,b = String.Empty,c = new int[0],d = new Dictionary<string,int>() };
var o2 = JsonConvert.DeserializeAnonymousType(json,anonymous);

Console.WriteLine(o2.b);
Console.WriteLine(o2.c[1]);

第二种做法(匿名类):

var o3 = JsonConvert.DeserializeAnonymousType(json,new { c = new int[0],int>() });

Console.WriteLine(o3.d["y"]);

DeserializeAnonymousType 只是借助这个匿名对象参数(anonymous) 反射类型而已,也就是说它和反序列化结果并非同一个对象。正如 o3 那样,我们也可以只提取局部信息。

第三种做法(索引器):

实际上,我们也可以直接反序列化为 JObject,然后通过索引器直接访问。JObject、JProperty 等都继承自 JToken,它重载了基元类型转换操作符,我们可以直接得到实际结果。
var o2 = JsonConvert.DeserializeObject(json) as JObject;

Console.WriteLine((int)o2["a"]); Console.WriteLine((string)o2["b"]); Console.WriteLine(o2["c"].Values().Count()); Console.WriteLine((int)o2["d"]["y"]);

相关文章

AJAX是一种基于JavaScript和XML的技术,能够使网页实现异步交...
在网页开发中,我们常常需要通过Ajax从后端获取数据并在页面...
在前端开发中,经常需要循环JSON对象数组进行数据操作。使用...
AJAX(Asynchronous JavaScript and XML)是一种用于创建 We...
AJAX技术被广泛应用于现代Web开发,它可以在无需重新加载页面...
Ajax是一种通过JavaScript和HTTP请求交互的技术,可以实现无...