我正在try 使用nlohmann json库将json文件解析为json对象.

这是json文件:

{
    "n":1,
    "data":
    {
        "name":"Chrome",
        "description":"Browse the internet.",
        "isEnabled":true
    }
}

这是我的代码:

#include <nlohmann/json.hpp>
#include <iostream>
#include <fstream>

using namespace std;
using json = nlohmann::json;

int main()
{
    ifstream f("/Users/callum/sfucourses/cmpt373/test/example2.json");
    json data = json::parse(f);
    cout << data << endl;
}

如果我不进行解析,而只是执行cout << f.rdbuf(),我会得到正确的输出:

./interpret
/Users/callum/sfucourses/cmpt373/build
{
    "n":1,
    "data":
    {
        "name":"Chrome",
        "description":"Browse the internet.",
        "isEnabled":true
    }
}

但如果我进行解析并打印出json对象‘data’,那么"n":1和"name":"Chrome"将放在末尾而不是开头:

./interpret
{"data":{"description":"Browse the internet.","isEnabled":true,"name":"Chrome"},"n":1}

我怎么才能按正确的顺序打印呢?

推荐答案

JSON通常不排序,但库提供了nlohmann::ordered_json个保持插入顺序:

auto data = nlohmann::ordered_json::parse(f);

像上面那样解析文件并像您所做的那样打印它,会产生以下输出:

{"n":1,"data":{"name":"Chrome","description":"Browse the internet.","isEnabled":true}}

Json相关问答推荐

使用jolt删除空对象

带有PowerShell内核的NewtonSoft json.Net的奇怪行为

kotlinx-serialization:如何将具有不同类型对象的JsonArray转换为同一个Class

如何在数组抖动中按值分组

Vega图表计数聚合如果数据值为空数组则不显示任何内容,如何解决此问题?

盒子图显示不正确

Vega-Lite(Deneb):难以将最小和最大值应用于折线图和文本标签以及线条末尾的点

如何将具有相同 struct 的多个JSON文件中的对象数组合并成一个数组?

jq: Select 何时来自另一个数组的值与此 json 中的值匹配

在 JOLT 中重新排列值

派生类的属性没有得到价值

如果有 1 个元素,如何防止 ConvertFrom-Json 折叠嵌套数组

在 JSON 字符串中react i18n 换行符

在 Rails 中使用 JSON 创建嵌套对象

如何在 django rest 框架中定义列表字段?

ASP.NET MVC 读取原始 JSON 发布数据

从 Json 对象 Android 中获取字符串值

如何从 MVC 控制器返回 Json 对象以查看

使用 axios 在 POST multipart/form-data 请求中发送文件和 json

如何在所有子项中查询具有特定值的属性的firebase