写点什么

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

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

关注

评论

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

架构师训练营第 0 期第 11 周作业

无名氏

架构师训练营 - 第 11 周作业

Jam

Flink算子状态-9

小知识点

scala 大数据 flink

极客大学架构师训练营 0 期 week 11 学习笔记

chun1123

安全 高可用系统的架构

架构师训练营 第十一周 作业

CR

系统稳定高可用的方案以及用户密码验证函数

Acker飏

架构师训练营 第十一周 总结

CR

Week 11命题作业

Jeremy

漫画解读:唐僧师徒如何帮助大唐官网打造CDN+OSS完美架构?

阿里云Edge Plus

etcd的高可用

李小匪

极客大学架构师训练营 0 期 week 11 作业

chun1123

高可用 密码校验

【高并发】高并发秒杀系统架构解密,不是所有的秒杀都是秒杀!

冰河

高并发 分布式限流 秒杀系统 异步削峰 签约计划第二季

用户密码验证函数

任小龙

架构师训练营第十一周作业

子豪sirius

高可用的系统架构

莫莫大人

极客大学架构师训练营

Week 11 作业

鱼_XueTr

Newbe.Claptrap 框架入门,第四步 —— 利用 Minion,商品下单

newbe36524

云计算 微服务 dock .net core ASP.NET Core

云上度假村木莲庄酒店助你远离城市的喧嚣

InfoQ_967a83c6d0d7

java安全编码指南之:拒绝Denial of Service

程序那些事

Java 安全编码指南 java安全编码 DOS攻击 zip炸弹

架构师训练营 Week 11 作业

Wancho

安全架构和高可用系统的架构

周冬辉

高可用系统的架构

第十一周命题作业

菲尼克斯

第十一周学习总结

菲尼克斯

【华为云数据库技术大公开】机房失火后,还能拯救你的数据吗?

华为云开发者联盟

数据库 机房 华为云 数据存储 云数据库

Week11总结

熊威

用户密码验证函数

周冬辉

加密

Apache Pulsar 社区周报:08-15 ~ 08-21

Apache Pulsar

云原生 Apache Pulsar 消息系统 消息中间件

系统不可用的原因和解决方案

极客李

Week11作业1

熊威

架构师训练营 Week 11 总结

Wancho

极客时间架构师训练营 - week11 - 作业 2

jjn0703

极客大学架构师训练营

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