JSONCPP遍历JSON数据

地址:http://blog.csdn.net/hellokandy/article/details/51607311

#include "json.h"  
#include   
#include   
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;  
}  


运行结果:JSONCPP遍历JSON数据_第1张图片


你可能感兴趣的:(c++)