写点什么

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:502435
用户头像

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

关注

评论

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

AnyGo for Mac:解锁虚拟定位新境界,全球位置任我行

Rose

2025多端社交圈子论坛兴趣社区圈子论坛小程序 圈子社区论坛系统源码

DUOKE七七

php MySQL uniapp

SecuritySpy Mac:打造高效、智能的视频监控解决方案

Rose

CAD迷你看图 for Mac:高效便捷的CAD图纸查看与编辑神器

Rose

Navicat for MySQL:数据库管理与开发的全方位解决方案

Rose

Rhinoceros 8:三维建模新纪元,引领设计革命

Rose

唤醒 AI 算力,专有云 ABC Stack 面向企业级智算平台的 GPU 提效实践

百度Geek说

AI口语练习APP的技术难点

北京木奇移动技术有限公司

软件外包公司 AI口语练习 AI英语练习

蛇年开工送大礼,邀您一键体验DeepSeek系列新模型

华为云开发者联盟

人工智能 大模型 昇腾云 DeepSeek

人工智能与低代码,如何让数据分析从“苦力活”变成“轻松事”?

天津汇柏科技有限公司

人工智能 低代码,

Firefox 135, Chrome 135, Chromium 135 官网离线下载 (macOS, Linux, Windows)

sysin

firefox

Lightroom Classic 2021 for mac(LRC 2021大师版) v10.3.0中文直装版

Rose

扫码联网系统(源码+文档+部署+讲解)

深圳亥时科技

VMware Fusion Pro 13 for Mac(VM虚拟机) v13.5.0中文激活版

Rose

office 365 for mac破解版附激活工具

Rose

奇经技术携手IPTV亮相春晚-开启中医健康新时代

极客天地

华茂集团力挺富卫集团上市,补偿公告彰显信心,共绘股权辉煌未来

科技汇

Magnet for Mac:智能窗口管理,提升工作效率的神器!

Rose

培训中心教务系统(源码+文档+部署+讲解)

深圳亥时科技

Omnissa Horizon Windows OS Optimization Tool 2412 - Windows 系统映像优化工具

sysin

淘宝商品描述 API 接口的开发、应用与收益

科普小能手

数据挖掘 数据分析 淘宝 API 接口 跨境电商运营

如何在离线环境下部署 EMQX ECP

EMQ映云科技

emqx EMQX ECP

劳工管理系统(源码 + 文档 + 部署 + 讲解)

深圳亥时科技

Aiseesoft AnyCoord for Mac(GPS虚拟定位软件) v1.0.36激活版

Rose

“全球金牌敏捷课程” · 2 月 22-23 日 CSM 认证课程 · Jim 老师

ShineScrum

Scrum 敏捷 Scrum Master 敏捷教练认证 敏捷认证

Nexpose 7.5.0 for Linux & Windows - 漏洞扫描

sysin

Nexpose

a16z 最新语音 AI 报告:语音将成为关键切入点,但非最终产品本身(含最新图谱)

声网

舞台LED租赁显示屏搭建的4种形式

Dylan

视觉 LED LED display LED显示屏 舞台表演

"扒光"淘宝商品详情价格主图详情图数据的秘密武器!不用爬虫,API让你躺着赚信息差

代码忍者

淘宝API接口

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