HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

采访:James Newton-King 谈 Json.NET 4.5

  • 2012-05-01
  • 本文字数:1534 字

    阅读完需:约 5 分钟

Json.NET 项目刚刚发布了.NET JSON 框架 4.5 版本。新版本包含了许多新特性,并带来了显著的速度提升。InfoQ 最近采访了 Json.NET 的创建者 James Newton-King,采访过程谈及了新版本以及整个项目。

InfoQ: 在最后两个主要发布的版本(Json.NET 4.0 和 4.5)中,你最满意的特性有哪些?

James Newton-King:对于 Json.NET 4.0,我比较的满意的是借助.NET 4.0 而加入的动态支持。我最喜欢添加那些能够让我能边做边学的特性。例如,在 JObject/JArray/JValue 上实现 IDynamicMetaObjectProvider 对我来说无疑是一个学习的过程,而我也希望当前版本能够从中受益。在实现的同时,我还需要将其分离以便将它从 Json.NET 支持的旧版本中排除。

将 ISO 8601 日期格式作为默认的序列化格式是 Json.NET 4.5 中我最喜爱的特性。JSON 中的日期对于我来说一直是个头疼的问题,虽然 Json.NET 一开始就使用了微软的日期格式,但我从来都不喜欢。JSON 库的互操作性对于非微软平台显然是个问题,不过更主要的原因是,使用微软格式的日期易读性很差。开发人员调试代码时,ISO 格式“2009-02-15T00:00:00Z”要比微软的旧日期格式“\/Date(1198908717056)\/”易读得多。令人惊讶的是,对于该破坏性改动,我还没有收到任何人的抱怨,我想它的推出肯定让.NET 开发人员很开心。

InfoQ:在未来版本中,你最想要看到哪些关键特性被添加?(你在 Codeplex 上的特性列表提到了添加 JSON 递归上限支持,还有其他的吗?)

J.N.K.:添加 JSON 递归上限支持主要出于两个原因。第一个原因是因为微软的 JSON 序列化器支持它,而我想要支持微软提供的所有特性。我觉得添加一个上限很有用,特别是如果你想公开暴露端点并希望进行锁定的话。另外一个原因是 ASP.NET MVC 团队会把 JSON 与 Web API 一同使用。目前他们自己实现了该功能,不过由于添加这个特性很容易,所以我想让 Web API 与 Json.NET 的工作方式变得与 JSON 的工作方式尽可能地相似。

我从来不为 Json.NET 添加新特性而筹备什么计划。我倾向于看看 Json.NET 开发人员在一些网站如 StackOverflow 上的提问,看看他们报告给我的 bug,然后想出一些主意来帮助改善这种情况。有的时候新特性与文档之间存在一个空档期,以至于开发人员不知道新特性已经有了。

InfoQ:你曾经提到“一个完美的 bug 修复意味着当前性能测试能够跑得 70,000% 快”,能否给大家解释一下?

J.N.K.:一位微软开发人员在对 Json.NET 进行压力测试后发现,将 100,000 个嵌套数组反序列化为 LINQ to JSON 对象花费的时间比想象中的要长得多。性能差的原因是因为 LINQ to JSON 对象会检查递归循环,也就是说,如果一个数组不是它自己的父容器,那么每次当新的嵌套数组反序列化时,都会检查它所有的父容器,例如,数组 90,001 会检查它的 90,000 个父容器,数组 90,002 会检查它的 90,001 个父容器等等。显然这种情况不是很理想。

解决方案很简单:检查被添加的条目是否拥有任何子元素。如果一个数组没有任何子元素的话,那么因为它不可能作为它自身父容器,因此可以跳过递归父容器检查。这一行的代码改动立刻带来了由 43 秒到 63 毫秒的速度提升。

InfoQ:4.0-6 发布版本着重强调了比.NET framework 方案更好的性能。你认为 Json.NET 的性能比起它的整个性能集合有重要性如何?

J.N.K.:除了那些需要极限性能的人员之外,几乎每一位开发人员都会从提高生产效率的特性中获益,因此平衡两者变得很重要。我要做的是确保 Json.NET 比.NET framework 序列化器更快,并同时提供更多功能。

InfoQ:好的,再次感谢 ****James Newton-King 的到来。如果你想要关于所有新特性的完整信息,可以查看这篇宣布;而如果想了解所有项目特性的概述,可以访问它的 Codeplex 站点

查看英文原文: Interview: James Newton-King on Json.NET 4.5

2012-05-01 04:102586
用户头像

发布了 125 篇内容, 共 37.3 次阅读, 收获喜欢 5 次。

关注

评论

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

钱大妈基于 Flink 的实时风控实践

Apache Flink

大数据 flink 编程 流计算 实时计算

多任务视频推荐方案,百度工程师实战经验分享

百度开发者中心

云上弹性高性能计算,支持生命科学产业高速发展、降本增效

阿里云弹性计算

HPC 高性能计算 生命科学 药物设计

AIOps落地五大原则(二):价值路线

BizSeer必示科技

NFT数字藏品APP系统开发

开发微hkkf5566

重新认识WorkPlus,不止IM即时通讯,是企业移动应用管理专家

WorkPlus

数商云X日本高化学,共同打造跨境化学品B2B平台新范式

数商云

数字化转型 b2b

A/B测试助力游戏业务增长

字节跳动数据平台

游戏开发 游戏 ab测试 游戏运营

父亲节特辑丨童年经典蓝精灵之百变蓝爸爸数字藏品,限量发售!

百度开发者中心

云原生多云管理利器 -- cluster-api 之 ControlPlane

Daocloud 道客

Kubernetes 云原生 多云管理 cluster-api ControlPlane

自适应批作业调度器:为 Flink 批作业自动推导并行度

Apache Flink

大数据 flink 编程 流计算 实时计算

CRM快速开发平台:破解管理困局

力软低代码开发平台

东方甄选双语直播火爆出圈,新东方转型初见端倪

易观分析

农业发展

对讲功能在远程办公中的应用 | 社区征文

Changing Lin

初夏征文

我的远程办公经验 | 社区征文

坚果

初夏征文

如何把企业内部碎片信息系统化?

小炮

链上智能合约Dapp系统开发部署搭建

薇電13242772558

区块链 智能合约

解密抖音春节红包背后的技术设计与实践

JackJiang

架构设计 短视频 社交产品

封装业务流程,解决复杂重复的审批流程配置

明道云

2021年4季度全国网络零售发展指数同比增长0.6%

易观分析

网络零售

2022淘宝天猫618背后的技术秘密

阿里巴巴大淘宝技术

异步容灾,AntDB的业务不间断数据恢复方案

亚信AntDB数据库

数据库 高可用 容灾 数据恢复

2022华为全球校园AI算法精英大赛即将升级启航,等你来战,开拓未来边界

最新动态

轻松实现微信滑动返回页面效果 | 社区征文

Changing Lin

android 安卓 自定义view 初夏征文

前后端如何并行开发,云端mock了解一下

Liam

前端 前端开发 Mock Mock 服务 前端工具

力扣每日一练之数组中篇Day2

京与旧铺

6月月更

LP流动性质押挖矿分红dapp系统开发合约定制

开发微hkkf5566

覆盖接入2w+交通监测设备,EMQ为深圳市打造交通全要素数字化新引擎

EMQ映云科技

物联网 IoT 智慧交通 实践案例 6月月更

毕业回馈!Apache Doris 社区所有贡献者来领礼品啦!

SelectDB

数据库 数据湖 开源项目 apache doris 社区活动

从华为WeAutomate数字机器人论坛,看政企领域的“政务新智理”

王吉伟频道

RPA 数字化转型 华为WeAutomate 政务新智理 数字政府

8种桌面IDE CodeArts智能代码补全类型

华为云开发者联盟

云计算 代码 华为云

采访:James Newton-King谈Json.NET 4.5_.NET_Jeff Martin_InfoQ精选文章