写点什么

Json.NET 更新:对合并对象、依赖注入、F#以及 JSONPath 的支持

  • 2014-08-18
  • 本文字数:1172 字

    阅读完需:约 4 分钟

Json.NET 6.0 今年一共发布了 4 个版本的更新,其中最近一次发生在上周。经过这几次更新,加入了一些新的特性,包括一些F#专有的特性,对JSONPath 查询的支持,与依赖注入框架的集成,支持合并JSON 对象,以及其它更多特性。

.NET 框架本身自带了一些序列化器,包括数据契约(Data Contract)JSON 序列化器和 JavaScriptSerializer ,不过在特性与性能上还是存在着提升空间。JSON.NET 弥补了这部分的不足,它成为了在.NET 社区中非常流行的一款开源替代产品。JSON.NET 带来了一些新的特性,例如 LINQ-to-JSON 、支持 BSON、支持匿名类型、支持流行的ORM 框架(EF 和NHibernate)等等,这些是.NET 框架本身所不具备的功能。不仅如此,它在性能上的表现也更加出色。(请对照一下这份特性比较与性能数据详细分析

Json.NET 在今年所发布的一些重要特性进一步提高了它的功能:

  • JSON 合并 – 允许你将一个 JSON 对象或数组合并入另一个对象或数组中。 这一功能类似于 jQuery 中的 extend 方法,但它还支持递归,并且在处理数组时提供了更多选择。在合并数组(包括那些内嵌在对象中的数组)时,你可以指定是按位置进行连结或是进行归并(union),或者是完全替换。

    合并功能同样支持 LINQ-to-JSON。看一下这个测试能够帮助你更好地理解该特性,以及它所支持的各种用例。

  • 整合依赖注入框架 – 如果你指定了如何在运行时还原某个对象的机制,你就能够直接反序列化接口或抽象类型,就像你在使用 Autofac Ninject 等依赖注入等框架时所做的一样。你所需的仅是在序列化器中定义一个继承自 DefaultContractResolver 的 resolver 类即可。

  • 一些 F#专有的特性 – 支持区分归并、F#集合、F#列表、序列、set 和 map。对于新的不可变集合来说,如果某个泛型 T 的集合定义了一个接受 IEnumerable的构造函数,那么 Json.NET 能够做到反序列化至该种集合类型。

  • 能够处理元数据属性,而无须保证 JSON 对象的属性顺序。Json.NET 的某些特性需要使用元数据,例如维持类型或引用。为了使这些特性正常工作,它要求这些元数据必须排列在其它属性之前。可以使用一个名为 MetadataPropertyHandling.ReadAhead 的设置来打开这一功能,代价是在内存占用与速度上略有损失。

  • JSONPath 查询的完整支持。这一功能类似于 XPath ,它可以用于对 JSON 数据进行浏览。如果你仅需要某个特定的值,那么在不必反序列化整个 JSON 对象的情况下就可以实现这一点。

其它一些有趣的特性还包括反序列化嵌套的 DataTable 对象,以及嵌入 DataTable 对象中的数组,支持 JSON 文件中的单行注释,支持 Windows Phone 8.1 和其它一些特性。更多细节请查看 James Newton-King 所发布的帖子

另一个值得关注的高性能.NET 第三方序列化工具是 ServiceStack.Text 现如今它是一种商业的开源软件)。

查看英文原文: Json.NET Updates: Merge, Dependency Injection, F# and JSONPath Support

2014-08-18 01:502127
用户头像

发布了 428 篇内容, 共 182.2 次阅读, 收获喜欢 39 次。

关注

评论

发布
暂无评论
发现更多内容

LeetCode题解:144. 二叉树的前序遍历,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

社区活动 | Apache Flink Meetup·深圳站,锁定 Flink 最佳实践

Apache Flink

flink

苹果A系列芯片的三年AI进化:为何要大规模升级AI算力?

脑极体

甲方日常 19

句子

工作 随笔杂谈 日常

当代开发者的好帮手,浅析.NET敏捷开发框架的优势与特点

Learun

敏捷开发 开发工具

2020年“有史以来”全网最全1309道BAT大厂java面试题(附答案分享)

数据库 程序员 面试 Java 分布式

360视觉入局人脸识别:终结行业“裸奔”,“安全”是终极法则

脑极体

亚马逊宣布20亿美元“气候宣言基金”首批投资企业名单

爱极客侠

小白读了这篇JVM,直呼真香!(长篇干货预警)

Java架构师迁哥

加强顶层设计 推动数字出版高质量发展

CECBC

区块链 数字经济 数字出版

高并发优雅的做限流

架构师修行之路

限流算法 高并发优化

开篇:开机界面设置欢迎语显示IP地址

程序饲养员

Linux __init__

(1)skyent VMware Workstation Pro下载与安装

休比

英特尔、阿里巴巴全方位深化技术创新 共同引领数智未来

E科讯

第十三周.命题作业

刘璐

自己实现一个简单的 DevOps 工具系列(后端篇)- 1

sinsy

Shell CI/CD

2020 恒生 LIGHT 开发者大会,早鸟票限时开售

DT极客

深耕边缘计算 揭秘阿里云边缘云网一体化的技术实践

阿里云Edge Plus

5G 边缘计算 视频

虚拟币交易所搭建,数字货币永续合约平台搭建

拥抱K8S系列-08-命令行工具管理K8S集群1

张无忌

Kubernetes 运维 kubectl

闪送,为何能从顺丰中杀出一条血路?

学习 编程 架构师

坚持新媒体写作第21天了,聊聊我为什么喜欢写作

老胡爱分享

学习 写作 习惯养成 坚持 随笔杂谈 讨论写作

flutter app 打开微信小程序探究

Daniel

穷人也能建个人博客了——阿里云函数计算体验

KAMI

阿里云 云服务 Faas WordPress

阿里面试,让我说说ThreadLocal,我一口气说了四种

root

Java 多线程 ThreadLocal

HashMap的7种循环姿势你都掌握了吗?

root

hashmap 循环效率 JDK1.8

The Way To Go --- 切片

书旅

slice Go 语言

第十一周.总结

刘璐

第十二周.命题作业

刘璐

掌握这21个Java的核心技术点,涨薪5K起步,告别上班复制粘贴!!

Java架构师迁哥

谈谈力软快速开发平台B/S专业报表工具

Philips

敏捷开发 开发工具

Json.NET更新:对合并对象、依赖注入、F#以及JSONPath的支持_.NET_Roopesh Shenoy_InfoQ精选文章