【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

JSON.NET 5 中的架构变更

  • 2013-05-20
  • 本文字数:807 字

    阅读完需:约 3 分钟

Newtonsoft 对 JSON.NET 进行了两个架构升级,以使其能够更容易地在涉及第三方库的项目中使用。这两个特性是默认设置和扩展数据。

JSON.NET 5r5 中,开发者可以使用 JsonSerializerSettings 类重写序列化 / 反序列化选项。每次调用 JsonConvert 方法的时候通常都会将它作为参数传入,或者用它创建新的 JsonSerializer。

如果类库想要使用新的默认模式,那么可以使用 JsonSerializer.CreateDefault 方法。这样便会使用应用通过 JsonConvert.DefaultSettings 方法定义的默认项。如果类库不想使用此行为,那么可以继续正常地创建 JsonSerializer 的实例。

应该注意的是,JsonConvert.DefaultSettings 方法的参数是一个 Func而不是 JsonSerializerSettings 的实例。这意味着每次需要的时候都将创建默认 JsonSerializerSettings 的一个新副本。

另一个变化是对扩展数据的支持。这些数据在原生 JSON 有效负荷中有效,但不会在类结构中出现。一般来说,这会在服务器定义发生改变而客户端尚未升级到匹配版本时发生。

在 WCF 中,可以通过 IExtensibleDataObject 接口获取扩展数据。它为 ExtensionDataObject 类型提供了一个单独的属性,一个几乎没有什么作用的不透明类。ExtensionDataObject 包含的任何数据只对数据协定序列化器有效。这意味着,它只在极其特殊的情况下才会发挥作用,例如我们将一些数据序列化,使用旧版本的代码将其反序列化,重新序列化,接下来再次使用原始版本反序列化的情况。

JSON.Net 将扩展数据以字串和 JToken 对象字典的形式暴露。该字典通过使用 [JsonExtensionData] 属性标记的属性或域对外暴露。通过使用属性而不是接口,开发者可以将域标记为私有以维持封装。

查看英文原文 Architectural Changes in JSON.NET 5


感谢孙镜涛对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2013-05-20 12:162424
用户头像

发布了 256 篇内容, 共 68.4 次阅读, 收获喜欢 10 次。

关注

评论

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

纵览 PoseiSwap 经济体系,如何从宏大的叙事中持续捕获价值?

股市老人

纵览 PoseiSwap 经济体系,如何从宏大的叙事中持续捕获价值?

EOSdreamer111

[腾讯云 Cloud studio 实战训练营] 制作Scrapy Demo爬取起点网月票榜小说数据

ベ布小禅

Gartner 首发中国数据分析与人工智能技术成熟度曲线,TDengine 入选

爱倒腾的程序员

【我和openGauss的故事】为集群增加VIP

daydayup

华为发布数字资产继承功能

HMS Core

华为 HarmonyOS HMS Core

【我和openGauss的故事】 openGauss 5.0.0 事务相关语法

daydayup

向极致体验奔跑,不妥协的星闪与中国科技的少年气

脑极体

通信

纵览 PoseiSwap 经济体系,如何从宏大的叙事中持续捕获价值?

大瞿科技

纵览 PoseiSwap 经济体系,如何从宏大的叙事中持续捕获价值?

BlockChain先知

【我和openGauss的故事】带有out参数的存储过程及自定义函数的重载测试

daydayup

C与C++之间的相互调用及函数区别

二哈侠

在 Go 语言单元测试中如何解决 Redis 存储依赖问题

江湖十年

后端 单元测试 Go 语言 redis'

盘点一对一直播源码的那些小功能

山东布谷网络科技

源码 社交APP 一对一直播

VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答、图文匹配、图片分类、常识推理等

汀丶人工智能

人工智能 自然语言处理 多模态大模型 视觉问答 图文匹配

程序员如何利用AI加持

Bruce Talk

AI 敏捷开发

Java 文字转图片输出,Java 输出透明背景图片,Java文字转图片防爬虫

java易二三

Java 程序员 爬虫 计算机 电脑

Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结

EOSdreamer111

纵览 PoseiSwap 经济体系,如何从宏大的叙事中持续捕获价值?

西柚子

MiniRBT中文小型预训练模型:结合了全词掩码技术和两段式知识蒸馏技术,加快推理速度

汀丶人工智能

人工智能 自然语言处理 nlp 预训练模型 知识蒸馏

9. 数据类型 - 列表详解

茶桁

Python

纵览 PoseiSwap 经济体系,如何从宏大的叙事中持续捕获价值?

小哈区块

HDC 2023 | HarmonyOS应用联运服务,帮助开发者实现全链路经营提效

Geek_2d6073

行业信创-太极信创研习院第36期ITAIP信创精华班央企专场培训在京成功举办

电子信息发烧客

再获殊荣!AlphaSights荣获猎聘“2022年度非凡雇主”称号

科技热闻

【我和openGauss的故事】使用Ora2Pg迁移oracle数据到openGauss

daydayup

Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结

股市老人

【腾讯云Cloud Studio实战训练营】React 快速构建点餐页面

热爱编程的小白白

简单好用的ElasticSearch可视化工具:es-client和Head

javalover123

搜索引擎 elasticsearch ELK ES Elastic Search

图数据库使用及业务场景

小小怪下士

Java MySQL 数据库

父子线程共用线程池

soap said

JSON.NET 5中的架构变更_.NET_Jonathan Allen_InfoQ精选文章