JSONCPP遍历JSON数据

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

#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张图片

你可能感兴趣的:(JSON)