JSONCPP遍历JSON数据

来源:互联网 发布:电信云计算公司 编制 编辑:程序博客网 时间:2024/04/29 11:59

使用jsoncpp遍历json数据中所有键值,并打印出来。

#include "json.h"#include <iostream>#include <string>typedef Json::Writer JsonWriter;typedef Json::Reader JsonReader;typedef Json::Value  JsonValue;using namespace std;void print_json(JsonValue data){JsonValue::Members mem = data.getMemberNames();for (auto iter = mem.begin(); iter != mem.end(); iter++){cout << *iter << "\t: ";if (data[*iter].type() == Json::objectValue){cout << endl;print_json(data[*iter]);}else if (data[*iter].type() == Json::arrayValue){cout << endl;auto cnt = data[*iter].size();for (auto i = 0; i < cnt; i++){print_json(data[*iter][i]);}}else if (data[*iter].type() == Json::stringValue){cout << data[*iter].asString() << endl;}else if (data[*iter].type() == Json::realValue){cout << data[*iter].asDouble() << endl;}else if (data[*iter].type() == Json::uintValue){cout << data[*iter].asUInt() << endl;}else{cout << data[*iter].asInt() << endl;}}return;}int main(){std::string szJson = "{ \"weatherinfo\":{\"city\":\"北京\", \"cityid\" : \"101010100\", \"temp\" : \"18\", \"WD\" : \"东南风\", \"WS\" : \"1级\", \"SD\" : \"17 % \", \"WSE\" : \"1\", \"time\" : \"17:05\", \"isRadar\" : \"1\", \"Radar\" : \"JC_RADAR_AZ9010_JB\", \"njd\" : \"这是什么\", \"qy\" : \"1011\", \"rain\" : \"0\"} }";//解析json数据JsonReader reader;JsonValue value;if (!reader.parse(szJson, value)){return 0;}//遍历键值print_json(value);system("pause");return 0;}


运行结果:



0 0