1、初始化
使用一个字符串初始化一个Json::Value代码实例:
int P2PChannelParamDecode(char *inJson)
{
int ret = -1;
Json::Value root;
Json::Features features = Json::Features::strictMode();
Json::Reader reader(features);
bool parsingSuccessful = reader.parse(inJson, root);
if (parsingSuccessful) {
}
return ret;
}
2、循环遍历一个子数组
{
"stream": [
{
"resolution": [
"1920x1080",
"1280x720"
],
"now_resolution": 0,
"frame_rate": {
"totle_rate": 20,
"now_rate": 15
}
},
{
"resolution": [
"720x480"
],
"now_resolution": 0,
"frame_rate": {
"totle_rate": 20,
"now_rate": 15
}
}
]
}
如图上实例,需要将resolution中的值保存到结构体中,而resolution的元素并不固定,需要循环遍历,以下是解决方法。
const Json::Value streamInfo = value["stream"];
if (!streamInfo.isNull()) {
for (unsigned int i = 0; i < streamInfo.size(); i++) {
if (!streamInfo[i]["now_resolution"].isNull()) {
param->streamInfo[i].resolution = streamInfo[i]["now_resolution"].asInt();
}
if (!streamInfo[i]["frame_rate"]["totle_rate"].isNull()) {
param->streamInfo[i].maxFrameRate = streamInfo[i]["frame_rate"]["totle_rate"].asInt();
}
if (!streamInfo[i]["frame_rate"]["now_rate"].isNull()) {
param->streamInfo[i].frameRate = streamInfo[i]["frame_rate"]["now_rate"].asInt();
}
const Json::Value resolutions = streamInfo[i]["resolution"];
if (!resolutions.isNull()) {
for (unsigned int t = 0; t < resolutions.size(); t++) {
strcpy(param->streamInfo[i].resolutions[t], resolutions[t].asCString());
}
}
}
}