一个.NET通用JSON解析/构建类的实现(c#)
在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加上JSON序列化特性。本文将试图提供一个高度灵活的JSON通用类型(JsonObject),实现对JSON的解析及序列化。
blog: 'http://www.cnblogs.com/xfrog'
JsonObject json = new JsonObject();
json["orders"] = new JsonProperty(new JsonObject());
json["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
JsonObject config = json.Properties<JsonObject>("orders");
json["orders"]["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
json["orders"]["name"] = new JsonProperty("Xfrog");
json["orders"]["books"] = new JsonProperty();
JsonProperty book = json["orders"]["books"].Add(new JsonObject());
book["name"] = new JsonProperty("C# 网络核心编程");
book["publish"] = new JsonProperty("2010-3-24");
book = json["orders"]["books"].Add(new JsonObject());
book["name"] = new JsonProperty("C#入门经典中文版");
book["publish"] = new JsonProperty("2009-10-16");
JsonObject json2 = new JsonObject((a) =>
a["orders"] = new JsonProperty(new JsonObject((b) =>
b["date"] = new JsonProperty(DateTime.Now.ToLongTimeString());
b["name"] = new JsonProperty("Xfrog");
b["books"] = new JsonProperty();
b["books"].Add(new JsonObject((c) =>
c["name"] = new JsonProperty("C# 网络核心编程");
c["publish"] = new JsonProperty("2010-3-24");
b["books"].Add(new JsonObject((c) =>
c["name"] = new JsonProperty("C#入门经典中文版");
c["publish"] = new JsonProperty("2009-10-16");
a["blog"] = new JsonProperty("http://www.cnblogs.com/xfrog");
JsonObject newObj = new JsonObject(jsonStr);
Console.WriteLine(newObj["orders"].GetValue<JsonObject>()["books"].GetValue<List<JsonProperty>>()[1].GetValue<JsonObject>()["name"].Value);
Console.WriteLine(newObj["orders"].Object["books"].Items[1].Object["name"].Value);
Console.WriteLine(newObj["orders"]["books"][1]["name"].Value);