QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

关注

评论

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

淘宝商品列表API接口全攻略

tbapi

淘宝API接口 淘宝商品列表接口

GreatSQL5.7 与 8.0 对 DATE 非法值处理方式不同

GreatSQL

深度解析字节跳动Trae:中国首款AI编程工具如何重塑开发测试生态

测试人

人工智能

九章云极 Aladdin重塑 AI 开发范式的先锋力量

九章云极DataCanvas

探索微店商品详情API接口:解锁电商数据的新篇章

代码忍者

微店商品详情API接口

陪玩小程序源码:如何打造爆款陪玩平台?

DUOKE七七

php MySQL uniapp 陪玩源码

我在县城“驯化”AI:有多少“人工”才有多少“智能”

趣解商业

人工智能 AI 科技

esbuild构建工具简介

天翼云开发者社区

构建工具 esbuild

校园网黑龙江等级保护三级解决方案

黑龙江陆陆信息测评部

启动Tomcat时报错,提示80端口被占用怎么办?

天翼云开发者社区

80端口共用 弹性云主机

关于 PD etcd 空间使用满处理记录

TiDB 社区干货传送门

版本升级 集群管理 管理与运维 备份 & 恢复

软件实施文档,项目实施管理方案(Word原件)

金陵老街

软件实施 软件方案

IPQ5332, IPQ5322, and IPQ5312-WiFi 7 Empowerment: A Comprehensive Analysis of Qualcomm

wifi6-yiyi

wifi

和鲸科技出席全球开发者先大会专题论坛语料专场,共探 AI 基础设施重构数据协作新范式

ModelWhale

Python 人工智能 大数据 AI DeepSeek

Active Directory审核的常见误区

运维有小邓

日志管理 日志审计 AD域管理

从 MongoDB 到 TDengine,沃太能源实现 18 倍写入性能提升

TDengine

数据库 tdengine 时序数据库

国内企业与美国分支网络连接的四大实用方案

Ogcloud

企业组网 企业网络 企业网络专线 跨国企业组网

如何选择合适的数据库助力企业数字化转型?3 月 20 日,TiDB vs MySQL 线上 Meetup 第二期诚邀 TiDBer 们一起探讨!

TiDB 社区干货传送门

爬虫党必看:如何用动态IP绕过平台限制

kookeey代理严选

Python 爬虫代理 动态代理IP kookeey代理 IP防止被封

非凸科技荣获“创·在上海”国际创新创业大赛总决赛优胜企业20强

非凸科技

TOPRISM:借助 TiDB Cloud Chat2Query 实现业务智能升级

TiDB 社区干货传送门

京东 x AutoMQ x CubeFS: 万亿级 Kafka 消息规模下的降本增效之旅

AutoMQ

云计算 大数据 kafka 云原生 流处理

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