Jsoncpp 使用方法解析

Jsoncpp是目前比较好用的开源Json解析库,现在总结一下它的使用方法,理解,以供以后查阅。

在引入Jsoncpp的时候我们看到Jsoncpp里边的常用的cpp文件,有json_reader.cpp,json_value.cpp,json_writer.cpp,


其中:

json_value.cpp用来定义jsoncpp可以使用的类型,大概有



json_reader.cpp 主要用于将json串解析到json_value


json_writer.cpp 主要用于将字符串转换为json串

一、使用Jsoncpp解析Json串

Json串

示例:{"strjson":"jsonTest","address":"sea","array":[{"Test1":"Json1"},{"Test2":"Json2"},{"Test3":"Json3"}]};

可以看见,上面的json串包含两种结构的json串,对象类型和数组类型。

解析代码:

<pre name="code" class="cpp">#include <iostream>   
#include <string>   
#include"json/json.h"
int main()
{ 

	std::string strJson = "{ \"strjson\":\"jsonTest\", \"address\" : \"sea\", \"array\" : [{\"Test1\":\"Json1\"}, {\"Test2\":\"Json2\" }, { \"Test3\":\"Json3\" }] }";

	Json::Reader reader;

	Json::Value valueType1;
	//将strJson放至value区进行处理
	if (reader.parse(strJson, valueType1))
	{
		//第一种结构,对象类型,可以直接按键值获得关键值
		std::string out = valueType1["strjson"].asString();
		std::cout << out << std::endl;

		//第二种结构被还包含在第一种结构中,由第一种结构获取
		//第二种结构只能按照迭代器来获取
		Json::Value valueType2 = valueType1["array"];
	
		for (int i = 0; i < valueType2.size(); i++)
		{
			std::cout << valueType2[i]["Test3"].asString()<<std::endl;
			std::cout << valueType2[i]["Test2"].asString() << std::endl;
		}
	}
	getchar();
	return 0;

}



 
 

二、使用Jsoncpp生成Json串

 

代码示例:

<pre name="code" class="cpp">{
	Json::Value root;
	Json::Value arrayObj;
	Json::Value item;
	//创建一个对象
	item["Test1"] = "Json1";
	item["Test2"] = "Json2";
	item["Test3"] = "Json3";
	root["strJson"] = "jsonTest";
	root["address"] = "sea";
	arrayObj.append(item);//item对象被作为值放入arrayObj中
	root["array"] = arrayObj;
	
	//将json转换为字符串
	root.toStyledString();
	std::cout << root << std::endl;
	getchar();
	return 0;

}



 
 

 

运行结果如下:




 

转载于:https://www.cnblogs.com/citron/p/6135604.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值