【C#】解析C#中JSON.NET的使用
目录结构:
- JSON.NET简介
- Serializing and Deserializing JSON
- Json Convert
- Json Serializer
- LINQ TO JSON
- Converting XML
- Convert JSON to XML
- Convert XML to JSON
- 原文链接
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的使用相关推荐
- 在Flutter中解析复杂的JSON(一篇顶十篇)
文章目录 JSON结构#1:简单 map 访问对象 Snippet #1 : imports **Snippet #2 : **加载Json Asset(可选)** Snippet #3 : 加载响应 ...
- android 对象数据库中,解析嵌套的JSON对象,并存储在数据库中的Android
我只是试图让存储在我的JSON文件中的值,并将其保存到SQLite数据库:解析嵌套的JSON对象,并存储在数据库中的Android 这是我的JSON文件: { "list": { ...
- Android中的JSON解析方式:json; Gson ; Fastjson
本文主要介绍Json数据的解析 ----a,json数据的介绍 ----b,json数据的解析 ----c,gson数据的解析,谷歌公司的一种格式 ----d,fastjson数据的解析,阿里巴巴的一 ...
- Android中怎获取json,Android应用中如何解析获取的json数据
Android应用中如何解析获取的json数据 发布时间:2020-11-24 17:10:08 来源:亿速云 阅读:107 作者:Leah 这篇文章将为大家详细讲解有关Android应用中如何解析获 ...
- js html 处理json数据,JS中Json数据的处理和解析JSON数据的方法详解
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族 ...
- IOS中JSON数据的解析
IOS中JSON数据解析 官方为我们提供的解析JSON数据的类是NSJSONSerialization,首先我们先来看下这个类的几个方法: + (BOOL)isValidJSONObject:(id) ...
- android中json解析及使用(上)
本文整理自:http://www.open-open.com/lib/view/open1326376799874.html 一.JSON的定义 JSON是一种轻量级的数据交换格式,具有良好的可读和便 ...
- [1138]java中json的使用和解析
文章目录 1.创建json对象 1.1 创建JSONObject对象 1.2 创建JSONArray对象 2.解析json 2.1 官方json包解析 2.2 fastjson解析 2.3 jacks ...
- C++中json解析开源库收集,支持json5
文章目录 zpl-c 库 HJSON cJSON RapidJSON (推荐) DAW JSON Link v2 JSON ,这库稳定,文档齐全.(推荐) json-c (c实现) json_dto ...
最新文章
- java性能调优指南,帮你解决90%的问题!
- 什么意思_手机HD是什么意思 手机信号区显示hd是什么意思
- 想要写好的程序应该远离计算机
- DropDownList实现无限分级
- Python Excel工具类封装, 实现excel表头加颜色
- ARMLINUX学习笔记(3)---安装交叉编译器
- 大数据_MapperReduce_Hbase的优化和Hbase相关面试题_以及hbase的javaapi的一部分源码---Hbase工作笔记0029
- JAVA线程池_并发队列工作笔记0004---Callable原理_多线程执行Callable任务
- 致传统企业朋友:不够痛就别微服务,有坑 (1)
- 【开发工具】之windows下gnu makefile编写
- Elasticsearch 安装的时候,Unsupported major.minor version 51.0问题的解决
- 【Vegas原创】控制文件损坏,使用trace文件恢复DB
- Three.js - 加载 .OBJ 格式模型(十六)
- 高等数学总结(无穷级数)
- 如何让图片保持原比例,占满整个盒子
- ROC曲线的通俗理解
- 软件测试中7个看透不说透的真理
- 关于CWnd和HWND
- 【Python核心】垃圾回收机制
- scrapy xpath获得a标签内的br em标签文字内容
热门文章
- 委托的BeginInvoke和EndInvoke
- multiselect多选下拉框
- 阿里云深圳数据中心正式开放
- uni-app 组件传值
- vue项目(webpack+mintui),使用hbuilder打包app - 小小人儿大大梦想 - 博客园
- javascript --- 使用语法糖class定义函数
- Laravel中的Blade模版
- [逆向][Writeup]ISG2015 flagfinder - .NET程序逆向
- Linux基础之文件权限详解
- phpcms_v9推送到其他栏目后再在其他栏目删除导致数据库出错