哪位大侠能给我发个构建和解析json的类

 我来答
xiangjuan314
2016-04-26 · TA获得超过3.3万个赞
知道大有可为答主
回答量:2.9万
采纳率:0%
帮助的人:2920万
展开全部
一个.NET通用JSON解析/构建类的实现(c#)
此文内容已过期,现在可使用Newtonsoft.Json库来序列化/反序列化JSON(http://james.newtonking.com/json)。

在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加上JSON序列化特性。本文将试图提供一个高度灵活的JSON通用类型(JsonObject),实现对JSON的解析及序列化。
假设JSON对象内容如下:
隐藏行号 复制代码 ?JSON
{
orders: {
date: '21:31:59',
name: 'Xfrog',
books: [{
name: 'C# 网络核心编程',
publish: '2010-3-24'
}, {
name: 'C#入门经典中文版',
publish: '2009-10-16'
}]
},
blog: 'http://www.cnblogs.com/xfrog'
}

使用JsonObject来构建,可选择以下三种方式:
方式一:
隐藏行号 复制代码 ?C#
//通过标准构造函数

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");

方式二:
隐藏行号 复制代码 ?C#
//通过回调函数简化对象的构建

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");

});

方式三:
隐藏行号 复制代码 ?C#
//通过字符串构建Json对象

JsonObject newObj = new JsonObject(jsonStr);

获取Json对象属性值的方法,也有三种方式:
隐藏行号 复制代码 ?C#
//通过泛型函数

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);

直接使用ToString函数,将JsonObject转换为Json字符串:
隐藏行号 复制代码 ?C#
String jsonStr = json.ToString();

注意:
我在重载ToString函数时,并没有将字符串转换为JavsScript字符串类型(即对需要转义的字符的处理),当然,要实现也是极其简单的。另外,对于带String参数的ToString,我也为做特殊处理,感兴趣的朋友可自行实现。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式