gpt4 book ai didi

c++ - 在 JsonCpp 中读取 json 数组

转载 作者:行者123 更新时间:2023-11-28 05:00:17 28 4
gpt4 key购买 nike

我尝试为我的程序编写一个简单的 JSON 阅读器,然后我使用 JsonCpp。我的网络服务器有这个 JSON:

{
"return":
{
"status":200,
"message":"Accepted"
},
"entries":
[
{
"messageid":185002992,
"message":"CplusItsGood",
"status":1,
"statustext":"test",
"sender":"1234567",
"receptor":"123456789",
"date":1234,
"cost":140
}
]
}

这是我的 C++ 代码:

    Json::Reader reader;
Json::Value root;

reader.parse(jsonContext, root, false);

const Json::Value entriesArray = root["return"]["entries"];

int A = entriesArray["sender"].asInt();

cout << A;

它只打印 0,我无法读取 senderentries 的任何其他元素大批。例如,我想获取 costsender 的值。

我该怎么做?

最佳答案

  1. 你的根包含 2 个元素“return”和“entries”所以或者root["return"]root["entries"]

  2. 然后 - 数组包含一个成员列表 - 因此即使它只有一个条目 - 您仍然必须获取它。

  3. 如果值被引用 - 它是字符串 - 您不能对其使用 getInt。例如 getInt 适用于 "status"而不是 "sender"

这是整个样本

#include <iostream>
#include <string>
#include <json/json.h>
int main()
{

std::string s = R"({
"return":
{
"status":200,
"message":"Accepted"
},
"entries":
[
{
"messageid":185002992,
"message":"CplusItsGood",
"status":1,
"statustext":"test",
"sender":"1234567",
"receptor":"123456789",
"date":1234,
"cost":140
}
]
})";


Json::Reader reader;
Json::Value root;

reader.parse(s, root, false);

auto entriesArray = root["entries"];

auto firstelem = entriesArray[0];
std::string sender = firstelem["sender"].asString();
int i = std::stoi(sender);
std::cout << "array:" << entriesArray << "\n";
std::cout << "element:" << firstelem << "\n";
std::cout << "value:" << sender << "\n";
std::cout << "parsed value:" << i << "\n";
}

输出

array:[
{
"cost" : 140,
"date" : 1234,
"message" : "CplusItsGood",
"messageid" : 185002992,
"receptor" : "123456789",
"sender" : "1234567",
"status" : 1,
"statustext" : "test"
}
]
element:{
"cost" : 140,
"date" : 1234,
"message" : "CplusItsGood",
"messageid" : 185002992,
"receptor" : "123456789",
"sender" : "1234567",
"status" : 1,
"statustext" : "test"
}
value:1234567
parsed value:1234567

关于c++ - 在 JsonCpp 中读取 json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46203948/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com