现代C ++多维数组的JSON问题

时间:2018-09-25 08:35:40

标签: c++ json

所以我有一个使用cURL的JSON字符串,我正在尝试使用JSON for Modern C ++(nlohmann :: json)解析数据。这是我的代码:

double retValue(string data) {
    string str;
    double value = 0;
    try {
        auto jsonData = json::parse(data.c_str());
        str = jsonData["layer"][1]["Page"]["Number"];
        value = stoi(str);
    }
    catch(json::parse_error& e) {
        cout << "Error: " << e.what() << endl;
        return 0;
    }

    return value;
}

因此在PHP中,json_decode可以很好地解码为数组,并且可以通过这种方式轻松解析值,但是我在使用C ++和该库时遇到了麻烦。我在运行时收到以下错误,但可以正常编译:

抛出'nlohmann :: detail :: type_error'实例后调用

terminate   what():[json.exception.type_error.305]无法将operator []与对象一起使用 中止(核心已弃用)

JSON数据类似于我要解析的数据,我认为多维是问题所在,并且我没有正确处理数据。

{
    "layer": {
        "1": {
            "Page": {
                "Number": 3.14 
                }
            } 
        }
} 

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:2)

C ++是一种强类型语言,必须使用正确的数据类型:

str = jsonData["layer"]["1"]["Page"]["Number"];

但是在PHP中,您访问data[1],与data["1"]

相同