写点什么

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

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

关注

评论

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

MES管理系统助力企业车间管理可视化

万界星空科技

数字化转型 mes 可视化大屏 万界星空科技 生产可视化

MatrixOne 助力某电信运营商构建低成本高性能车联网管理系统

MatrixOrigin

数据库 车联网 电信运营商

828云服务器再添新选择!华为云Flexus X实例重磅亮相

平平无奇爱好科技

828云服务选购好时机!华为云Flexus X实例刷新云上体验

平平无奇爱好科技

SaaS业务架构:业务能力分析

不在线第一只蜗牛

架构 SaaS

记一次 RabbitMQ 消费者莫名消失问题的排查

EquatorCoco

Rabbit MQ

座无虚席!首期流程挖掘实践训练营火爆收官

望繁信科技

数字化转型 流程挖掘 流程资产 流程智能 望繁信科技

振动韧性与智能的双翼,让数智金融飞向未来之屿

脑极体

AI

康养为松,智能为鹤:华为全屋智能画出的松鹤长春图

脑极体

AI

一条SQL语句在MySQL中是如何执行的?

快乐非自愿限量之名

MySQL 数据库 sql

荣誉加冕|数造科技荣获“2024爱分析·数据智能优秀厂商”

数造万象

人工智能 大数据 敏捷开发 智能化 大模型

如何确定性能测试指标

老张

软件测试 性能测试 技术指标 高性能高可用

软件项目全套资料、全方案、源码梳理清单

金陵老街

开发文档 软件文档 实施文档 运维文档

参与滴滴开源项目,获得精美礼品

XIAOJUSURVEY

GitHub 开源 活动 PR Issue

镜舟科技面对亿级数据分析场景,如何做到金融级放心用?

镜舟科技

大数据 金融 分析型数据库 StarRocks

“数据思维人才培养论坛” 于大湾区大学举行,和鲸科技受邀共话产教创新路径

ModelWhale

人工智能 大数据 人才培养 高等教育

低代码开发应用:确保数字化项目成功的5个技巧

不在线第一只蜗牛

低代码 数字化

使用豆包Marscode 创建了一个”天气预报“小应用

豆包MarsCode

Python 人工智能 程序员 AI 项目

直播标准权威发布,阿里云RTS获首批卓越级评估认证

阿里云视频云

云计算 音视频 视频云 超低延时直播

Yihong,从多元职业到代码之路 | MarsCoders 开发者说

豆包MarsCode

Python 人工智能 编程 程序员 AI

精彩回顾|博睿数据Bonree ONE 3.0产品发布会圆满落幕:三城联动 共襄盛举!

博睿数据

Facebook养号与推广技巧

Ogcloud

facebook 云手机 海外云手机 FB推广 FB引流

海外云手机解决IP、成本、稳定性问题

Ogcloud

云手机 海外云手机 云手机海外版 海外原生IP 海外IP

漆包线工厂生产管理MES系统功能介绍

万界星空科技

mes 万界星空科技 漆包线mes 铜线mes 漆包线

反DDD模式之“复用”

快乐非自愿限量之名

DDD

如何免费调用有道翻译API实现多语言翻译

幂简集成

翻译软件 API

大咖领衔,2天AI创业创收训练营即刻启程!不要错过,速来占位!

霍格沃兹测试开发学社

InfoQ精选 | 10款项目管理利器助力企业效率提升

爱吃小舅的鱼

项目管理 项目管理工具

高并发不慌!超实用缓存优化小窍门,你值得拥有

巧手打字通

redis 缓存 高并发 缓存架构 缓存加速

828云服务器选择多!华为云Flexus X实例让上云更轻松

平平无奇爱好科技

中国可观测日「成都站」圆满落幕

观测云

可观测性

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