JSON for Modern C++

C++ 的 JSON 库
授权协议 MIT
开发语言 C/C++
所属分类 Web应用开发、 JSON/BSON开发包
软件类型 开源软件
地区 不详
投 递 者 钱黎明
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

JSON for Modern C++ 是一个由德国大牛 nlohmann 编写的在 C++ 下使用的 JSON 库。

具有以下特点

  • 直观的语法

  • 整个代码由一个头文件组成 json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便

  • 使用 C++ 11 标准编写

  • 使用 json 像使用 STL 容器一样

  • STL 和 json 容器之间可以相互转换

  • 严谨的测试:所有类都经过严格的单元测试,覆盖了 100% 的代码,包括所有特殊的行为。此外,还检查了 Valgrind 是否有内存泄漏。为了保持高质量,该项目遵循核心基础设施倡议(CII)的最佳实践

示例代码

假设要创建如下的 JSON 对象

{
  "pi": 3.141,
  "happy": true,
  "name": "Niels",
  "nothing": null,
  "answer": {
    "everything": 42
  },
  "list": [1, 0, 2],
  "object": {
    "currency": "USD",
    "value": 42.99
  }
}

使用这个 JSON 库,可以这样写

// create an empty structure (null)
json j;

// add a number that is stored as double (note the implicit conversion of j to an object)
j["pi"] = 3.141;

// add a Boolean that is stored as bool
j["happy"] = true;

// add a string that is stored as std::string
j["name"] = "Niels";

// add another null object by passing nullptr
j["nothing"] = nullptr;

// add an object inside the object
j["answer"]["everything"] = 42;

// add an array that is stored as std::vector (using an initializer list)
j["list"] = { 1, 0, 2 };

// add another object (using an initializer list of pairs)
j["object"] = { {"currency", "USD"}, {"value", 42.99} };

// instead, you could also write (which looks very similar to the JSON above)
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::array 和 json::object

// a way to express the empty array []
json empty_array_explicit = json::array();

// ways to express the empty object {}
json empty_object_implicit = json({});
json empty_object_explicit = json::object();

// a way to express an _array_ of key/value pairs [["currency", "USD"], ["value", 42.99]]
json array_not_object = json::array({ {"currency", "USD"}, {"value", 42.99} });
  • 最近学习了json for modern c++的使用,在此总结一些常用功能使用方法。 老规矩,还是先简单介绍一下什么是json吧。 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Pe

  • JSON for Modern C++是nlohmann在GitHub上开源的读写json文件的C++库,使用者仅需包含一个json.hpp文件即可。 开源地址为:GitHub - nlohmann/json: JSON for Modern C++ 使用起来比较简单的了,首先从GitHub上将源码下载到本地,使用CMake编译源码(确保勾选了JSON_BuildTests) 在编译工程中找到un

  • windows下cpp解析json文件暂时找到三种方法:jsoncpp、QJson、json for modern c++ jsoncpp 安装 git clone https://github.com/open-source-parsers/jsoncpp cd jsoncpp mkdir build && cd build cmake .. make 把生成的bin、include、lib目

  • GitHub开源项的地址:https://github.com/nlohmann/json json for modern c++是一个德国大牛nlohmann写的,有以下特点: 1.直观的语法。 2.整个代码由一个头文件组成json.hpp,没有子项目,没有依赖关系,没有复杂的构建系统,使用起来非常方便。 3.使用c++11标准编写。 4.使用json 像使用STL容器一样。 5.STL和jso

  • 前言 一开始使用jsoncpp,但是jsoncpp已经不更新了,nlohmann还在更新,并且jsoncpp做过一次大的版本升级,导致api不兼容,以前使用过的工程代码不能很好的升级到新的版本,并且jsoncpp是多个文件支持,使用的时候我编译成了lib,nlohmann是一个头文件,更方便。 nlohmann使用c++11的新功能,更多的c++方法,使用起来更方便。并且nlohmann在调试的时

  • JSON for modern c++ / nlohmann 最近在使用这个c++实现的json库,作者在github上提供了源码,是个开源的c++项目 GitHub开源项的地址:https://github.com/nlohmann/json JSON简介 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSO

 相关资料
  • 问题内容: 我一直在寻找一套在JSON和XML之间进行转换的例程,但毫无用处。我在Javascript,Java,PHP和Python中找到了这样的例程,但在C或C ++中却找不到。 FWIW,我的json库是json- spirit。我当前正在处理JSON,并希望通过转换层添加XML支持(将传入消息从XML转换为JSON,对其进行处理,将结果转换回XML,然后将其输出)。 有人有指针吗? 我还看

  • 问题内容: 我正在使用返回JSON的API。 我有一个方法调用api,并解析所需节点的JSON响应。 到目前为止,除了最新的JSON响应似乎格式错误之外,其他所有功能都可以正常工作。 其他回复如下: 我使用JObject.Parse按名称带回适当的节点。 最新的JSON响应返回为: 如您所见,没有“名称”,并且JSON稍微无效。 我该如何解析。对于第一个示例,我使用下面的代码,但是现在JSON没有

  • 问题内容: 我正在尝试存储从以下请求中获取的JSON中的JSON … 得到的JSON从获得 的身体 是下面的,正如你可以看到有是JSON内的JSON,我怎么能存储 的是 JSON在 NSDictionary中 ,你可以看到,JSON是引号之间。 问题答案: 实际上,您拥有的是:经典JSON,其中有一个字符串“代表” JSON。 因此,由于我们可以这样做: NSData <=> NSString N

  • 问题内容: 我想将DataTable作为Json格式显示在图表上。 如何将DataTable转换为Json? 谢谢。 问题答案: 您可以使用JSON.NET将数据表(在许多其他类型中!)自动序列化为JSON。

  • 问题内容: 我已经完成了有关iOS中JSON的Raywenderlich教程,但是我很难将其调整为适合自己的JSON文件。这是 我的JSON : 这是 我的代码 : 日志返回。 问题答案: 你这样做是不对的。您已正确将JSON数据填充到字典(名为)中。但你有一个(被称为你的主要内部)和价值的是内部数组。 正确的代码是: 了解概念。这取决于你的内心里有什么。如果它是一个数组(在Values内部),则

  • 问题内容: 我是C#和.NET的新手,但是我编写了此代码来调用存储过程,然后我想获取返回的DataTable并将其转换为JSON。 那么我的问题是最好/最简单的方法是什么?一个例子很好,因为我对此还很陌生。 问题答案: 代替数据表,您应该使用数据读取器。您的代码效率低下,而且有点难以阅读-您可能需要执行以下操作: 然后,您可以使用该信息