【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

关注

评论

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

Royal TSX for Mac(强大的远程管理软件)v6.0.2激活版

iMac小白

库克透露苹果已有接班人计划,或从这四人中诞生;谷歌创始人亲自给 Gemini 写代码丨 RTE 开发者日报 Vol.114

声网

Parallels Desktop 19 for Mac v19.1.0一键激活版

iMac小白

AI 领域代币市场趋势:探索最热门投资领域的前沿动向

Footprint Analytics

区块链 AI

Angular 控制流与延迟视图揭秘

PingCode

研发

软件测试/测试开发丨接口学习笔记-session、cookie、token的区别

测试人

软件测试 测试开发

案例分析:如何在企业飞速发展、研发团队快速增长中,快速解决研发管理和效率问题?

PingCode

产品经理 研发管理

海外云手机——跨境电商必备神器

Ogcloud

云服务 跨境电商

提升团队协作效率——SmartSVN for Mac的核心价值

iMac小白

面试官:说说MVCC的执行原理?

王磊

Java 面试

软件测试/测试开发|Linux三剑客之——awk命令详解

霍格沃兹测试开发学社

软件测试/测试开发|web基础知识介绍

霍格沃兹测试开发学社

IBM SPSS Statistics 27 for Mac(spss数据统计分析软件)v27.0.1中文版

iMac小白

PDF Expert for Mac(PDF编辑阅读转换器)v3.8.2中文激活版

iMac小白

DBeaverEE for Mac(数据库管理)v23.3.1企业激活版

iMac小白

万界星空科技数字化车间应用场景

万界星空科技

数字化 工业互联网 智能工厂 mes 数字化车间

集成学习方法——随机森林

小齐写代码

云图说|有了这2招必杀技,你的主机“身陷重围”都不怕!

华为云开发者联盟

云计算 华为云 主机安全 华为云开发者联盟 华为云HSS

程序员如何高效学习技术?

伤感汤姆布利柏

开源 程序员 低代码 Java技术提升程序员

为什么要运营海外社媒?海外云手机能发挥什么作用?

Ogcloud

短视频 社交媒体

软件测试/测试开发|关于bug,你需要了解的,全在这里了

霍格沃兹测试开发学社

2023-12-27:用go语言,店铺数量n,编号1~n, 人的数量m,编号1~m, 每个人有自己投票的店铺p,和改投1号店的报价x。 返回想让1号店铺成为人气最高的店,至少花多少钱? 1 <= p,

福大大架构师每日一题

福大大架构师每日一题

Affinity Publisher for mac(桌面排版神软件) 1.10.8完美激活版

mac

苹果mac Windows软件 Affinity Publisher 页面布局软件

Magnet for mac(macOS窗口管理软件)v2.14.0中文免激活版

iMac小白

Charles for Mac(HTTP协议抓包工具)v5.0b12注册激活版

iMac小白

「悦数图数据库」获 2023 年度 IT168 创新解决方案奖

悦数图数据库

图数据库 图数据库实战

什么是制造业的数字化车间

万界星空科技

数字化转型 数字化 MES系统 云mes 万界星空科技mes

AdGuard for Mac(广告拦截软件) 2.9.2 (1234) 中文激活版

mac

苹果mac Windows软件 AdGuard 广告拦截软件

使用 extract + TextMapAdapter 实现了自定义 traceId

观测云

Trace 链路

即时通讯技术文集(第29期):IM开发技术合集(Part2) [共18篇]

JackJiang

网络编程 即时通讯 IM

Premiere Pro 2024 for Mac(PR 2024视频编辑软件)v24.1中文激活版

iMac小白

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