• Json.net/Newtonsoft 3.0 新特性JObject/Linq to Json


    原文:http://www.cnblogs.com/chsword/archive/2008/09/19/Newtonsoft_new_3_0.html

    http://www.cnblogs.com/usharei/archive/2012/04/24/2467578.html

    原本感觉Newtonsoft.Json和.net自己的JavaScriptSerializer相差无几,所以将工程里的Json都换成了JavaScriptSerializer来实现,可是近几日遇到一个需求.在反序列化时我并没有预先定义好的类,而是要以字典形式读取.

    于是我自己实现了一个类,由于没有模型对象,所以所有的Json读取和检测过程都要重新写过.

    后来却发现Newtonsoft中已经提供了我需要的功能,甚至还提供了Json的Linq查询.

    JObject

    下面用个实例来搞定它的读写

    1.Json是这样的

    {title:123,body:456,list:{title:'这是一个标题',body:'what'}}
    2.我要将其中几项都搞出来,代码:
    static void Main(string[] args)
    {
        string str = "{title:123,body:456,list:{title:'这是一个标题',body:'what'}}";
        JObject o = JObject.Parse(str);
        Console.WriteLine(o["title"]);
        Console.WriteLine(o["body"]);
        Console.WriteLine(o["list"]["title"]);
        Console.WriteLine(o["list"]["body"]);
        Console.ReadKey();
    }
    3.这样就输出了:
    123
    456
    "这是一个标题"
    "what"
     
    不足:字符串还是按字符串输出带"",但我想这也不是问题.Trim就好了

    Linq to Json

    Linq to JSON是用来操作JSON对象的.可以用于快速查询,修改和创建JSON对象.当JSON对象内容比较复杂,而我们仅仅需要其中的一小部分数据时,可以考虑使用Linq to JSON来读取和修改部分的数据而非反序列化全部.

    string str = "{title:123,body:456,list:{title:'这是一个标题',body:'what'}}";
    JObject o = JObject.Parse(str);
    
    var s =
      from p in o.Children()
      select p;
    
    foreach (var item in s)
    {
        Console.WriteLine(item);
    }
    
    Console.ReadKey();

    创建JSON数组和对象

    类名 说明
    JObject
     用于操作JSON对象
    JArray
     用语操作JSON数组
    JValue
     表示数组中的值
    JProperty
     表示对象中的属性,以"key/value"形式
    JToken
     用于存放Linq to JSON查询后的结果

    创建JSON对象

    JObject staff = new JObject();
    staff.Add(new JProperty("Name", "Jack"));
    staff.Add(new JProperty("Age", 33));
    staff.Add(new JProperty("Department", "Personnel Department"));
    staff.Add(new JProperty("Leader", new JObject(new JProperty("Name", "Tom"), new JProperty("Age", 44), new JProperty("Department", "Personnel Department"))));
    Console.WriteLine(staff.ToString());
  • 相关阅读:
    ASP记录(一)
    ASP HTML JS CSS JQ之间恩怨
    ASP记录(二)之Input
    网页范例
    初识GoAhead
    TCP、IP、Http、Socket、telnet
    自定义博客的背景图片
    工具管理操作类介绍
    STL string的构造函数
    cout 格式化输出
  • 原文地址:https://www.cnblogs.com/weekend001/p/3518001.html
Copyright © 2020-2023  润新知