9月7日-8日,相约 2023 腾讯全球数字生态大会!聚焦产业未来发展新趋势! 了解详情
写点什么

JSON for Modern C++ 发布 3.1 版本

  • 2018-02-18
  • 本文字数:960 字

    阅读完需:约 3 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

JSON for Modern C++ 3.1 版本增加了对 Universal Binary JSON(UBJSON)规范和 JSON 合并补丁(Merge Patch)的支持。

UBJSON 是支持 Modern C++ 几种格式之一,它可以减少编码值的大小,加快解码速度。除了 UBJSON, CBOR MessagePack 也同样支持 Modern C++。 每种格式都有不同的优势,选择哪种格式取决于你所需要的数据类型。在这三种格式中,UBJSON 是唯一完整二进制格式的,这就意味着所有的 JSON 值都可以转换成 UBJSON,并且所有的 UBJSON 值也都能转换成 JSON。

JSON 合并补丁格式的作用是声明两个 JSON 文档之间的差异。这种格式是与 HTTP PATCH 一起使用的,它能够对资源进行部分更新,而 HTTP PUT 则用于对资源进行完全替换。JSON 合并补丁允许你只对 JSON 的一部分进行定义,并且将其合并到服务器端。这比使用基本的 JSON 补丁格式更加方便,基本的 JSON 补丁格式依赖于一组操作的规范来对原始的 JSON 文档进行修补。例如:

复制代码
// a JSON value
json j_document = R"({
"a": "b",
"c": {
"d": "e",
"f": "g"
}
})"_json;
// a JSON patch (RFC 6902)
json j_patch_1 = R"([
{ "op": "replace", "path": "/a", "value": "z" },
{ "op": "remove", "path": "/f"}
])"_json;
// a JSON Merge patch (RFC 7386)
json j_patch_2 = R"({
"a":"z",
"c": {
"f": null
}
})"_json;

JSON for Modern C++ 库旨在提供一种直观的语法来对 JSON 数据进行处理,就好像该 JSON 数据是头等(first-class)数据类型一样。例如,你能通过以下语句来对一个对象进行初始化:

复制代码
json j2 = {
{"pi", 3.141},
{"happy", true},
{"name", "Niels"},
{"nothing", nullptr},
{"answer", {
{"everything", 42}
}},
{"list", {1, 0, 2}},
{"object", {
{"currency", "USD"},
{"value", 42.99}
}}
}

同样地,你可以通过将__json附加至 json 代码后边来对 JSON 代码进行解码:

复制代码
auto j2 = R"(
{
"happy": true,
"pi": 3.141
}
)"_json;

JSON for Modern C++ 另外的优点是易于集成,这要归功于它可以被封装于一个单独的头文件json.hpp中,而不需要任何外部库或依赖项。除此之外,它还声称能够通过 100% 的代码覆盖单元测试,并且不存在内存泄漏。

查看英文原文: JSON for Modern C++ Reaches Version 3.1

活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2018-02-18 18:001515

评论

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

Spring Boot 中集成ActiveMQ

武哥聊编程

Java springboot SpringBoot 2 28天写作 Activemq

Soul 学习笔记---使用 nacos 实现数据同步上篇(七)

fightingting

Soul网关

基于用户画像/AB测试的产品定价

无誉

联动链金-魔方支付体系整理

刷屏的微信8.0(文末附安卓下载链接) | 视频号 28 天 (15)

赵新龙

28天写作

点位盘,点位盘开发,点位盘合约交易。

v16629866266

腾讯T3大佬亲自教你!一起刷完了这份1307页的安卓面试宝典吧,吐血整理

欢喜学安卓

android 程序员 面试 移动开发

AWS CDK | IaC 何必只用 Yaml

郭旭东

AWS 基础设施即代码 IaC

2021年数字货币时代加速到来

CECBC

数字人民币

如何成为一名优秀的技术Leader?

架构精进之路

成长笔记 七日更 28天写作

数据结构与算法 - 哈夫曼树

ios 数据结构与算法

Elasticsearch document 的 _source 元数据

escray

elastic 七日更 28天写作 死磕Elasticsearch 60天通过Elastic认证考试

MDF智能合约APP开发|MDF智能合约软件系统开发

系统开发

数字货币呼之欲出,但这些套路须警惕!

CECBC

数字货币

如何理解新技术带来的新资产类别?

CECBC

区块链

HPC on Volcano:容器在气象行业HPC高性能计算场景的应用

华为云原生团队

大数据 容器 云原生 k8s 分布式计算

Linux:为什么性能工具需要 BPF 技术

博文视点Broadview

图说丨京东《技术重构社会供应链——未来科技趋势白皮书》

京东科技开发者

京东 智能供应链

程序员的简历,要注意以下几点

田维常

简历

2021面试脚本!夜读互联网Java开发27大专题,终入P7

比伯

Java 程序员 面试 计算机 技术宅

深度解读设备的“万能语言”鸿蒙系统的分布式软总线能力

华为云开发者联盟

鸿蒙 操作系统 智能设备 HarmonyOS 分布式软总线

数据库运维家中常备:上限约400MB/s,比COPY等工具还好用的数据利器

华为云开发者联盟

数据 GaussDB 数据迁移 gds FDW

软件测试--cookie学习

测试人生路

软件测试

美团图数据库平台建设及业务实践

NebulaGraph

图数据库

第一周

Richard

悟透前端 | ECMAScript 6的Map映射

devpoint

json 大前端 map ES6

2020年终总结:回顾、反思、期待

书旅

年终总结

基于机器学习的逻辑回归模型

无誉

爱了爱了!带着问题深入学习Handler,吊打面试官系列!

欢喜学安卓

android 程序员 面试 移动开发

Nine Ring九环智能合约软件开发|Nine Ring九环智能合约APP系统开发

系统开发

一文带你搞懂从动态代理实现到Spring AOP

华为云开发者联盟

spring jdk 容器 aop 动态代理

  • 扫码添加小助手
    领取最新资料包
JSON for Modern C++发布3.1版本_语言 & 开发_Sergio De Simone_InfoQ精选文章