JSONCPP遍历JSON数据

使用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;
}

运行结果:


 

  • 4
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hellokandy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值