一个.NET通用JSON解析/构建类的实…

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

在.NET Framework 3.5中已经提供了一个JSON对象的序列化工具,但是他是强类型的,必须先按JSON对象的格式定义一个类型,并将类型加上JSON序列化特性。本文将试图提供一个高度灵活的JSON通用类型(JsonObject),实现对JSON的解析及序列化。

假设JSON对象内容如下:

隐藏行号 复制代码 JSON
  1. 
    
  2. 
    
  3. 
    

使用JsonObject来构建,可选择以下三种方式:
方式一:

隐藏行号 复制代码 C#
  1. 
    
  2. ();
    
  3. json[());
    
  4. json[);
    
  5. >("orders");
    
  6. json[.Now.ToLongTimeString());
    
  7. json[);
    
  8. json[();
    
  9. ());
    
  10. book[);
    
  11. book[);
    
  12. book = json[());
    
  13. book[);
    
  14. book[);
    


方式二:

隐藏行号 复制代码 C#
  1. 
    
  2. ((a) =>
    
  3. {
    
  4.     a[((b) =>
    
  5.     {
    
  6.         b[.Now.ToLongTimeString());
    
  7.         b[);
    
  8.         b[();
    
  9.         b[((c) =>
    
  10.         {
    
  11.             c[);
    
  12.             c[);
    
  13.         }));
    
  14.         b[((c) =>
    
  15.         {
    
  16.             c[);
    
  17.             c[);
    
  18.         }));
    
  19.     }));
    
  20.     a[);
    
  21. });
    

方式三:

隐藏行号 复制代码 C#
  1. 
    
  2. (jsonStr);
    


获取Json对象属性值的方法,也有三种方式:

隐藏行号 复制代码 C#
  1. 
    
  2. >()["books"].GetValue<<SPAN style="COLOR: rgb(43,145,175)">List<<SPAN style="COLOR: rgb(43,145,175)">JsonProperty>>()[1].GetValue<<SPAN style="COLOR: rgb(43,145,175)">JsonObject>()["name"].Value);
    
  3. 
    
  4. ].Value);
    
  5. 
    
  6. ].Value);
    

直接使用ToString函数,将JsonObject转换为Json字符串:

隐藏行号 复制代码 C#
  1. jsonStr = json.ToString();
    

注意:

我在重载ToString函数时,并没有将字符串转换为JavsScript字符串类型(即对需要转义的字符的处理),当然,要实现也是极其简单的。另外,对于带String参数的ToString,我也为做特殊处理,感兴趣的朋友可自行实现。

Technorati 标签: .NET, JSON, C#

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/jamesf/p/4751650.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值