JsonCpp库遍历

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());

}

}

}

}

 

你可能感兴趣的:(C++,JsonCpp)