目录结构:

contents structure [-]
  1. JSON.NET简介
  2. Serializing and Deserializing JSON
    1. Json Convert
    2. Json Serializer
  3. LINQ TO JSON
  4. Converting XML
    1. Convert JSON to XML
    2. Convert XML to JSON
  5. 原文链接

JSON.NET对于.NET来说是一个非常高效的JSON框架。

1. JSON.NET的简介

  • 使用JSON.NET可以很方便的实现.NET对象和JSON对象之间的转化
  • Linq to JSON可以手动读写JSON对象
  • 高性能
  • 可以使用JSON格式的数据读写XML文件
  • 支持.NET2、.NET3.5、.NET4、.NET4.5、Silverlight、Windows Phone 、Windows 8 Store

在使用JSON.NET之前应该先引入JSON相应的EXE/DLL模块,比如Newtonsoft.Json文件:

2. Serializing and Deserializing JSON(序列化和反序列化JSON)

使用JSONSerializer可以非常方便的实现.NET对象与Json数据之间的转化,JSONSerializer会把.NET对象的属性名转化为Json数据中的Key,把对象的属性值转化为Json数据中的value。

2.1  JsonConvert

//Convert to Json
Product product = new Product();product.Name = "Apple";product.ExpiryDate = new DateTime(2008, 12, 28);product.Price = 3.99M;product.Sizes = new string[] { "Small", "Medium", "Large" };string output = JsonConvert.SerializeObject(product);
//{
//  "Name": "Apple",
//  "ExpiryDate": "2008-12-28T00:00:00",
//  "Price": 3.99,
//  "Sizes": [
//    "Small",
//    "Medium",
//    "Large"
//  ]
//}//Convert to Object
Product deserializedProduct = JsonConvert.DeserializeObject<Product>(output);

2.2 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。

3.LINQ to JSON

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

// create JObjectJObject o = JObject.Parse(@"{'CPU': 'Intel','Drives': ['DVD read/writer','500 gigabyte hard drive']}");// query JObjectstring cpu = (string)o["CPU"];
// Intelstring firstDrive = (string)o["Drives"][0];
// DVD read/writer

IList<string> allDrives = o["Drives"].Select(t => (string)t).ToList();
// DVD read/writer
// 500 gigabyte hard drive

4.Converting XML(XML转化)

4.1 Convert JSON to XML

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");
//<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>

4.2 Convert XML to JSON

 string xml = @"<?xml version='1.0' standalone='no'?><root><person id='1'><name>Alan</name><url>http://www.google.com</url></person><person id='2'><name>Louis</name><url>http://www.yahoo.com</url></person>
</root>";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"
//       }
//     ]
//   }
// }

5.原文链接

JSON.NET Document

转载于:https://www.cnblogs.com/HDK2016/p/7955179.html

【C#】解析C#中JSON.NET的使用相关推荐

  1. 在Flutter中解析复杂的JSON(一篇顶十篇)

    文章目录 JSON结构#1:简单 map 访问对象 Snippet #1 : imports **Snippet #2 : **加载Json Asset(可选)** Snippet #3 : 加载响应 ...

  2. android 对象数据库中,解析嵌套的JSON对象,并存储在数据库中的Android

    我只是试图让存储在我的JSON文件中的值,并将其保存到SQLite数据库:解析嵌套的JSON对象,并存储在数据库中的Android 这是我的JSON文件: { "list": { ...

  3. Android中的JSON解析方式:json; Gson ; Fastjson

    本文主要介绍Json数据的解析 ----a,json数据的介绍 ----b,json数据的解析 ----c,gson数据的解析,谷歌公司的一种格式 ----d,fastjson数据的解析,阿里巴巴的一 ...

  4. Android中怎获取json,Android应用中如何解析获取的json数据

    Android应用中如何解析获取的json数据 发布时间:2020-11-24 17:10:08 来源:亿速云 阅读:107 作者:Leah 这篇文章将为大家详细讲解有关Android应用中如何解析获 ...

  5. js html 处理json数据,JS中Json数据的处理和解析JSON数据的方法详解

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...

  6. IOS中JSON数据的解析

    IOS中JSON数据解析 官方为我们提供的解析JSON数据的类是NSJSONSerialization,首先我们先来看下这个类的几个方法: + (BOOL)isValidJSONObject:(id) ...

  7. android中json解析及使用(上)

    本文整理自:http://www.open-open.com/lib/view/open1326376799874.html 一.JSON的定义 JSON是一种轻量级的数据交换格式,具有良好的可读和便 ...

  8. [1138]java中json的使用和解析

    文章目录 1.创建json对象 1.1 创建JSONObject对象 1.2 创建JSONArray对象 2.解析json 2.1 官方json包解析 2.2 fastjson解析 2.3 jacks ...

  9. C++中json解析开源库收集,支持json5

    文章目录 zpl-c 库 HJSON cJSON RapidJSON (推荐) DAW JSON Link v2 JSON ,这库稳定,文档齐全.(推荐) json-c (c实现) json_dto ...

最新文章

  1. java性能调优指南,帮你解决90%的问题!
  2. 什么意思_手机HD是什么意思 手机信号区显示hd是什么意思
  3. 想要写好的程序应该远离计算机
  4. DropDownList实现无限分级
  5. Python Excel工具类封装, 实现excel表头加颜色
  6. ARMLINUX学习笔记(3)---安装交叉编译器
  7. 大数据_MapperReduce_Hbase的优化和Hbase相关面试题_以及hbase的javaapi的一部分源码---Hbase工作笔记0029
  8. JAVA线程池_并发队列工作笔记0004---Callable原理_多线程执行Callable任务
  9. 致传统企业朋友:不够痛就别微服务,有坑 (1)
  10. 【开发工具】之windows下gnu makefile编写
  11. Elasticsearch 安装的时候,Unsupported major.minor version 51.0问题的解决
  12. 【Vegas原创】控制文件损坏,使用trace文件恢复DB
  13. Three.js - 加载 .OBJ 格式模型(十六)
  14. 高等数学总结(无穷级数)
  15. 如何让图片保持原比例,占满整个盒子
  16. ROC曲线的通俗理解
  17. 软件测试中7个看透不说透的真理
  18. 关于CWnd和HWND
  19. 【Python核心】垃圾回收机制
  20. scrapy xpath获得a标签内的br em标签文字内容

热门文章

  1. 委托的BeginInvoke和EndInvoke
  2. multiselect多选下拉框
  3. 阿里云深圳数据中心正式开放
  4. uni-app 组件传值
  5. vue项目(webpack+mintui),使用hbuilder打包app - 小小人儿大大梦想 - 博客园
  6. javascript --- 使用语法糖class定义函数
  7. Laravel中的Blade模版
  8. [逆向][Writeup]ISG2015 flagfinder - .NET程序逆向
  9. Linux基础之文件权限详解
  10. phpcms_v9推送到其他栏目后再在其他栏目删除导致数据库出错