博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
json.net使用说明一
阅读量:6323 次
发布时间:2019-06-22

本文共 3317 字,大约阅读时间需要 11 分钟。

json.net灵活的实现.net对象和json之间进行转换,且性能比其他两种json序列化性能更高,使用方便简单。json.net使用的好处有如下几种:

  • 序列化和反序列化JSON(JsonConvert)    
string output = JsonConvert.SerializeObject(product)  //序列化//反序列化Product deserializedProduct = JsonConvert.DeserializeObject 
(output)
  • JsonSerializer的使用     

  JsonSerializer可以直接通过流的方式来操作JSON数据。将对象转化为JSON格式的字符串,然后存储到本地:   

Product product = new Product();product.ExpiryDate = new DateTime(2008, 12, 28);JsonSerializer serializer = new JsonSerializer();serializer.Converters.Add(new JavaScriptDateTimeConverter());//指定转化日期的格式serializer.NullValueHandling = NullValueHandling.Ignore;//忽略空值using (StreamWriter sw = new StreamWriter(@"d:\json.txt"))using (JsonWriter writer = new JsonTextWriter(sw)){   serializer.Serialize(writer, product);    // {"ExpiryDate":new Date(1230375600000),"Price":0}}

  将本地文件中的Json格式数据,转化为JObject对象:

   

JsonSerializer serializer = new JsonSerializer();serializer.Converters.Add(new JavaScriptDateTimeConverter());//指定转化日期的格式serializer.NullValueHandling = NullValueHandling.Ignore;//忽略空值using (StreamReader sr = new StreamReader(@"d:\json.txt"))using (JsonReader reader= new JsonTextReader(sr)){    JObject jo =(JObject) serializer.Deserialize(reader);//    {//  "Name": null,//  "ExpiryDate": "2008-12-28T00:00:00",//  "Price": 0.0,//  "Sizes": null//}}

案例中的 serializer.NullValueHandling = NullValueHandling.Ignore 表示忽略空值,也就是为null值的属性不转化,需要注意Decimal的默认值不是null,而是0。

  • LINQ to JSON

     Linq to Json可以非常快速的从JObject对象中查询数据,以及创建JObject对象。

// create JObjectJObject o = JObject.Parse(@"{   'CPU': 'Intel',   'Drives': [     'DVD read/writer',     '500 gigabyte hard drive'   ] }"); // query JObject string cpu = (string)o["CPU"];// Intelstring firstDrive = (string)o["Drives"][0];// DVD read/writerIList
allDrives = o["Drives"].Select(t => (string)t).ToList();// DVD read/writer// 500 gigabyte hard drive
  • json和XML之间互相转换
//JSON转换成XMLstring 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");//
//
james@example.com
//
true
//
2013-01-20T00:00:00Z
//
User
//
Admin
//
//
Software Developers
//
Creators of fine software products and services.
//
//
//XML转换成JSONstring xml = @"
Alan
http://www.google.com
Louis
http://www.yahoo.com
";XmlDocument doc = new XmlDocument();doc.LoadXml(xml);string json = JsonConvert.SerializeXmlNode(doc);Console.WriteLine(json);// {// "?xml": {// "@version": "1.0",// "@standalone": "no"// },// "root": {// "person": [// {// "@id": "1",// "name": "Alan",// "url": "http://www.google.com"// },// {// "@id": "2",// "name": "Louis",// "url": "http://www.yahoo.com"// }// ]// }// }

 

转载于:https://www.cnblogs.com/LGDD/p/9362346.html

你可能感兴趣的文章
调用谷歌翻译API(FREE)的java代码
查看>>
Windows进程崩溃问题定位方法
查看>>
程序员如何让自己 Be Cloud Native - 配置篇
查看>>
Django学习系列之Form基础
查看>>
每天一个linux命令(35):ln 命令
查看>>
SQL Server各个版本之间的差异
查看>>
方差分析中的多重比较
查看>>
SPI总线协议
查看>>
如何拆笔记本键盘(组图)
查看>>
lua install
查看>>
海量数据处理 算法总结
查看>>
DNS服务器之主从服务搭建
查看>>
vim编辑器常用操作整理
查看>>
带列表的对话框
查看>>
mysql性能参数查询
查看>>
VirtualBox运行报错Unable to load R3 module
查看>>
GCD的简单使用<一>
查看>>
Java进程的Perm Size突然陡增
查看>>
Python学习之urlib模块和urllib2模块学习
查看>>
Windows消息传递机制详解
查看>>