NET流行高性能JSON框架之Json.NET

发表于:2021-8-13 09:39

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:conan5566    来源:UP技术控

  在日常编程中经常会使用到Json来进行数据的交互好在.Net平台下有很多开源的Json库使得我们能够比较轻松快速的处理各种复杂的Json,其中Newtonsoft库是NET的流行高性能JSON框架。
  特性
  工具
  VS2010+
  Newtonsoft库
  从NuGet下载合适的Newtonsoft.Json库
  1.在你需要引用Newtosoft.Json的项目上,点击鼠标右键,管理Nuget程序包即可打开项目包管理器。
  2.在包管理器中输入关键字"Json"看到Newtosoft.Json这个库 点击右下加的箭头即可完成安装。
  示例
  1、序列化JSON-序列化和反序列化JSON,序列化程序设置和序列化属性。
  public class Account 
  { 
      public string Email { get; set; } 
      public bool Active { get; set; } 
      public DateTime CreatedDate { get; set; } 
      public IList<string> Roles { get; set; } 
  } 
  Account account = new Account 
  { 
      Email = "james@example.com", 
      Active = true, 
      CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc), 
      Roles = new List<string> 
      { 
          "User", 
          "Admin" 
      } 
  }; 
   
  string json = JsonConvert.SerializeObject(account, Formatting.Indented); 
  // { 
  //   "Email": "james@example.com", 
  //   "Active": true, 
  //   "CreatedDate": "2013-01-20T00:00:00Z", 
  //   "Roles": [ 
  //     "User", 
  //     "Admin" 
  //   ] 
  // } 
   
  Console.WriteLine(json); 
  2、LINQ to JSON-解析,查询,修改和编写JSON。
  JArray array = new JArray(); 
  array.Add("Manual text"); 
  array.Add(new DateTime(2000, 5, 23)); 
   
  JObject o = new JObject(); 
  o["MyArray"] = array; 
   
  string json = o.ToString(); 
  // { 
  //   "MyArray": [ 
  //     "Manual text", 
  //     "2000-05-23T00:00:00" 
  //   ] 
  // } 
  3、JSON模式-加载模式并验证JSON。请注意,JSON Schema验证已移至其自己的程序包。有关 更多详细信息,请参见https://www.newtonsoft.com/jsonschema。
  JObject o = JObject.Parse(@"{ 
    'Stores': [ 
      'Lambton Quay', 
      'Willis Street' 
    ], 
    'Manufacturers': [ 
      { 
        'Name': 'Acme Co', 
        'Products': [ 
          { 
            'Name': 'Anvil', 
            'Price': 50 
          } 
        ] 
      }, 
      { 
        'Name': 'Contoso', 
        'Products': [ 
          { 
            'Name': 'Elbow Grease', 
            'Price': 99.95 
          }, 
          { 
            'Name': 'Headlight Fluid', 
            'Price': 4 
          } 
        ] 
      } 
    ] 
  }"); 
   
  string name = (string)o.SelectToken("Manufacturers[0].Name"); 
   
  Console.WriteLine(name); 
  // Acme Co 
   
  decimal productPrice = (decimal)o.SelectToken("Manufacturers[0].Products[0].Price"); 
   
  Console.WriteLine(productPrice); 
  // 50 
   
  string productName = (string)o.SelectToken("Manufacturers[1].Products[0].Name"); 
   
  Console.WriteLine(productName); 
  // Elbow Grease 
  4、转换XML-将JSON转换为XML和XML转换为JSON。
  string json = @"{ 
    '@Id': 1, 
    'Email': 'james@example.com', 
    'Active': true, 
    'CreatedDate': '2013-01-20T00:00:00Z', 
    'Roles': [ 
      'User', 
      'Admin' 
    ], 
    'Team': { 
      '@Id': 2, 
      'Name': 'Software Developers', 
      'Description': 'Creators of fine software products and services.' 
    } 
  }"; 
   
  XNode node = JsonConvert.DeserializeXNode(json, "Root"); 
   
  Console.WriteLine(node.ToString()); 
  // <Root Id="1"> 
  //   <Email>james@example.com</Email> 
  //   <Active>true</Active> 
  //   <CreatedDate>2013-01-20T00:00:00Z</CreatedDate> 
  //   <Roles>User</Roles> 
  //   <Roles>Admin</Roles> 
  //   <Team Id="2"> 
  //     <Name>Software Developers</Name> 
  //     <Description>Creators of fine software products and services.</Description> 
  //   </Team> 
  // </Root> 
  5、BSON-序列化和反序列化BSON。
  public class Event 
  { 
      public string Name { get; set; } 
      public DateTime StartDate { get; set; } 
  } 
  Event e = new Event 
  { 
      Name = "Movie Premiere", 
      StartDate = new DateTime(2013, 1, 22, 20, 30, 0, DateTimeKind.Utc) 
  }; 
   
  MemoryStream ms = new MemoryStream(); 
  using (BsonWriter writer = new BsonWriter(ms)) 
  { 
      JsonSerializer serializer = new JsonSerializer(); 
      serializer.Serialize(writer, e); 
  } 
   
  string data = Convert.ToBase64String(ms.ToArray()); 
   
  Console.WriteLine(data); 
  // MQAAAAJOYW1lAA8AAABNb3ZpZSBQcmVtaWVyZQAJU3RhcnREYXRlAED982M8AQAAAA== 
  6、读取和写入JSON-使用JsonTextReader读取JSON,使用JsonTextWriter写入JSON。
  string json = @"{ 
     'CPU': 'Intel', 
     'PSU': '500W', 
     'Drives': [ 
       'DVD read/writer' 
       /*(broken)*/, 
       '500 gigabyte hard drive', 
       '200 gigabyte hard drive' 
     ] 
  }"; 
   
  JsonTextReader reader = new JsonTextReader(new StringReader(json)); 
  while (reader.Read()) 
  { 
      if (reader.Value != null) 
      { 
          Console.WriteLine("Token: {0}, Value: {1}", reader.TokenType, reader.Value); 
      } 
      else 
      { 
          Console.WriteLine("Token: {0}", reader.TokenType); 
      } 
  } 
   
  // Token: StartObject 
  // Token: PropertyName, Value: CPU 
  // Token: String, Value: Intel 
  // Token: PropertyName, Value: PSU 
  // Token: String, Value: 500W 
  // Token: PropertyName, Value: Drives 
  // Token: StartArray 
  // Token: String, Value: DVD read/writer 
  // Token: Comment, Value: (broken) 
  // Token: String, Value: 500 gigabyte hard drive 
  // Token: String, Value: 200 gigabyte hard drive 
  // Token: EndArray 
  // Token: EndObject 

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号