【问题标题】:Trying to parse JSON data尝试解析 JSON 数据
【发布时间】:2018-03-02 12:07:25
【问题描述】:

我正在使用 curl 和 JsonCpp (https://github.com/open-source-parsers/jsoncpp) 编写 C++ 代码。 Json::parseFromStream 返回以下数据:

Funds: [
        {
                "id" : 1,
                "jsonrpc" : "2.0",
                "result" :
                {
                        "availableToBetBalance" : 437.91000000000003,
                        "discountRate" : 4.0,
                        "exposure" : 0.0,
                        "exposureLimit" : -5000.0,
                        "pointsBalance" : 3135,
                        "retainedCommission" : 0.0,
                        "wallet" : "UK"
                }
        }
]

我如何提取 availableToBetBalance - 我尝试过类似的方法:

std::string d = json_data["result.availableToBetBalance"].asString();

和:

std::string d = json_data["result"]["availableToBetBalance"].asString();

后者抛出异常:in Json::Value::resolveReference(key, end): requires objectValue

【问题讨论】:

  • 不知道你用的是哪个库,你试过json_data["result"]["availableToBetBalance"].asString()之类的吗?
  • 我正在使用 jsoncpp (github.com/open-source-parsers/jsoncpp)。
  • 你读过wiki吗?
  • 是的。我认为是 Funds: [ 我不知道如何处理。
  • 不确定“资金”位,但方括号表示一个数组(即使它只包含一个元素),您是否尝试过类似 json_data[0]["result"][" availableToBetBalance"]?

标签: c++ json jsoncpp


【解决方案1】:

您忽略了由外部 [] 字符表示的数组层。

在这种特殊情况下,您要查找的数据位于数组的第一个(也是唯一一个)元素中,因此:

std::string d = json_data[0]["result"]["availableToBetBalance"].asString();
//                       ^^^

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2019-06-06
    • 2014-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多