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

在日常编程中经常会使用到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 Codecimal productPrice = (decimal)o.SelectToken("Manufacturers[0].Products[0].Price");Console.WriteLine(productPrice);
// 50string 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

更多功能见https://github.com/JamesNK/Newtonsoft.Json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/299643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tcpdump 详解

TcpDump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤&#xff0c;并提供and、or、not等逻辑语句来帮助你去掉无用的信息。和Linux终端状态下的其他软件一样&#xff0c;TcpDump也是依靠参数来工作&#xff0c;本文将…

敢叫岁月不冬天

敢叫岁月不冬天题记&#xff1a;观看人民公园千菊会有感——代腾飞 2009年11月21日 于成都绿柳成荫似境仙秋菊满园锦上添红黄白紫竞展颜要留秋月不冬天转载于:https://www.cnblogs.com/daitengfei/archive/2009/11/22/1607976.html

Scribefire发CSDN博客

历史在非常久非常久曾经&#xff0c;CSDN是支持外部工具来写文章的&#xff0c;但是在还有一个非常久非常久曾经就不行了。突然看到CSDN有能够用外部工具来写博客了&#xff08;CSDN的公告&#xff09;&#xff0c;一直以来都纠结这个问题&#xff0c;CSDN的编辑器不好用&#…

今日笔记!——分析Java应用性能

1 问题描述 因产品架构的复杂性&#xff0c;可能会导致性能问题的因素有很多。根据部署架构&#xff0c;大致的可以分为应用端瓶颈、数据库端瓶颈、环境瓶颈三大类。可以根据瓶颈的不同部位&#xff0c;选择相应的跟踪工具进行跟踪分析。 应用层面瓶颈大致有如下两类&#xf…

除了PS,还有它可以轻松实现图像处理!

全世界只有3.14 % 的人关注了青少年数学之旅在我们生活中&#xff0c;常见的图像处理软件有Adobe Photoshop、Adobe Illustrator等。然而&#xff0c;并非只有软件才能实现图像处理&#xff0c;通过编程手段也是能实现的&#xff01;今天&#xff0c;小天将要带着大家走进计算机…

微服务并不能解决你的烂代码问题

点击上方蓝字关注我们“微服务并不能解决你的烂代码问题很久以来&#xff0c;软件的交付质量一直是一个大家比较关心的问题&#xff0c;而程序员和架构师也一直在极力寻找一种更好的方式来构建应用系统。随着互联网爆炸式的增长&#xff0c;对于系统的交付速度和质量的要求也日…

不要设计模式

看到首页讲设计模式的文章和书&#xff0c;有些感慨抒发一下。我买过一本设计模式的书&#xff0c;基本上看了&#xff12;&#xff14;个模式的名称&#xff0c;大致把这几个名字记住了&#xff0c;我并没有沉下心来深入理解&#xff0c;并不是书讲得不好&#xff0c;我是一个…

protobuf在java应用中通过反射动态创建对象

2019独角兽企业重金招聘Python工程师标准>>> ---恢复内容开始--- 最近编写一个游戏用到protobuf数据格式进行前后台传输&#xff0c;苦于protobuf接受客户端的数据时是需要数据类型的如xxx.parseForm(...),这样就要求服务器在接受客户端请求时必须知道客户端传递的数…

[轉]数据挖掘工具的选择

轉自:http://blog.csdn.net/redvalley/archive/2006/02/06/593233.aspx 一、数据挖掘工具分类   数据挖掘工具根据其适用的范围分为两类&#xff1a;专用挖掘工具和通用挖掘工具。 专用数据挖掘工具是针对某个特定领域的问题提供解决方案&#xff0c;在涉及算法的时候充分考虑…

Java秘技之Json数据解析与转换 -- Java使用示例

概要 json是前后台交互常用的数据格式&#xff0c;在java后台中经常需要实现java bean、list和json字符串的相互转化&#xff0c;故简单介绍不同框架的使用&#xff0c;提供简单工具类。 在Java中&#xff0c;常见的json框架有&#xff1a;Jackson&#xff08;springboot默认…

黑科技轮胎:有能发电的,脑洞简直不要太大...

全世界只有3.14 % 的人关注了青少年数学之旅人类历史上的很多伟大发明&#xff0c;都是由脑洞产生的&#xff0c;这样那样&#xff0c;然后问题就解决了&#xff0c;过程很复杂&#xff0c;却又很简单&#xff0c;甚至有时候&#xff0c;是一种很奇葩的方式。在漫长的历史进程中…

将权限授予文件夹和程序集

http://technet.microsoft.com/zh-cn/office/zdc263t0.aspx 如何&#xff1a;将权限授予文件夹和程序集 (2003 System) 注意 适用于 本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 有关更多信息&#xff0c;请参见按应用程序…

VS 2019 16.11正式发布 | 新功能(Hot Reload 热重载)试用

VS 2019 16.11VS 2019 16.11已于2021.8.10正式发布。&#xff08;https://devblogs.microsoft.com/visualstudio/visual-studio-16-11/&#xff09;这个版本主要包括以下内容&#xff1a;Visual Studio中的Git工具体验改进支持.NET应用程序的Hot Reload&#xff08;热重载&…

测试String, StringBuilder,StringBuffer 的数据,我居然发现这些了~~

懒的搞什么开头了&#xff0c;直接撸代码吧 想了想还是给大家看看学姐照片吧&#xff0c;保持眼睛的明亮&#xff0c;代码敲多了&#xff0c;伤眼 1&#xff1a; 作StringBuilder与String的拼接比较 Test public void testString () {String s"";long begin S…

LeetCode --- Valid Parentheses

题目链接 Problem discription Given a string containing just the characters (, ), {, }, [ and ], determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and…

作息时间安排:

7&#xff1a;20起床7&#xff1a;30出发7&#xff1a;40早饭11&#xff1a;30-12&#xff1a;00午饭13&#xff1a;00-13&#xff1a;30午睡5&#xff1a;30-6&#xff1a;00 打水、 锻炼身体&#xff08;跑步到燕宏桥&#xff09;6&#xff1a;00-7&#xff1a;30 学习 英语、…

厉害了!这里藏着通关学霸的秘籍

全世界只有3.14 % 的人关注了青少年数学之旅在这个资讯丰富且易获取的时代&#xff0c;越来越多的人不愿意花时间阅读书籍&#xff0c;碎片化阅读成了主流。人们获取的东西多而杂&#xff0c;很难系统、全面。海量信息对人是冲击&#xff0c;更是诱惑。谁不想了解天下奇闻&…

学习了MPLS ×××

最近学习了一下MPLS 技术,确实蛮复杂的,而且觉得MPLS 技术主要是用在ISP以及厂商里面,是未来网络架构的一种主流技术,要完全掌握确实不是一件容易的事情,没法子,只能好好的先把理论学通了~加油加油~~TCP/IP路由技术我也还在看,全英文版,总体感觉英文版要比中文版容易理解的多了…

『 编程思维』之我见

编程思维&#xff0c;对于一个开发人员来说是必备的&#xff0c;但凡能让应用跑起来&#xff0c;不管应用的大小&#xff0c;优劣&#xff0c;说明这个开发人员都具有编程思维&#xff0c;毕竟程序认可了这个开发人员逻辑&#xff0c;能启动起来。小到几行代码&#xff0c;一个…

史上最全图详解Jvm—诊断工具和JVM监控

3.1. 工具概述 使用上一章命令行工具或组合能帮您获取目标Java应用性能相关的基础信息&#xff0c;但它们存在下列局限&#xff1a; 1&#xff0e;无法获取方法级别的分析数据&#xff0c;如方法间的调用关系、各方法的调用次数和调用时间等&#xff08;这对定位应用性能瓶颈至…