[C#][JSON]c#-.net通过json解析构建类

一个.NET通用JSON解析/构建类的实现(c#)

在.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();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

awonw

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值