jsoncpp 常用方法

        json是一种轻量级的数据结构,使用统一的数据格式,在不同平台,不同语言,不同应用之间交换数据。jsoncpp是一个开源库,是使用C++语言对json数据结构的一种实现。

JsonCpp是一个开源库

下载地址:https://github.com/open-source-parsers/jsoncpp

文档地址:http://open-source-parsers.github.io/jsoncpp-docs/doxygen/index.html

以上链接参考博客:json下载地址/文档地址

        C++ 项目中如何引入不做详细讨论,网上有很多说明,这里只对个人遇到的部分使用情况做一下说明。

  • json object 内部嵌套 json object
        以下是一段http 请求返回的数据结构,whenreadover是填充的json结构,为解决跨域的问题,这里不是重点,先跳过,这里只是演示如何从result中读取数据。
whenreadover([{
"state":200,
"result": {
	"ext_str" : "",
	"file" : "/upload/trainer/20180714/b5666deca8e75525857ef42ae7a32f88.jpg",
	"media_file" : "https://timing.1qjd.com/upload/trainer/20180714/b5666deca8e75525857ef42ae7a32f88.jpg",
	"media_file_from" : "",
	"media_guid" : "8aa62e92-1179-1d2b-9abd-dc4294834114"
}
 
}])

这里需要先判断result类型,然后直接赋值一个json::value 这里和基本数据类型赋值方式不同,使用方式上感觉前后不统一,容易让人困惑,需要注意一下。直接上代码

{
	Json::CharReaderBuilder builder;
	builder["collectComments"] = false;
	JSONCPP_STRING errs;
	Json::Value jRoot;
	Json::CharReader* reader = builder.newCharReader();
	if (!reader->parse(strPure.c_str(), strPure.c_str() + strPure.size(), &jRoot, &errs)) //从jsonStr中读取数据到jsonRoot
	{
		m_iState = 212;
		return;
	}
	int iCode = jRoot["code"].asInt();
	Json::ValueType type = jRoot["result"].type();
	if (type == Json::objectValue)
	{
		Json::Value subRet = jRoot["result"];
		string strGuid = subRet["media_guid"].asString();
		string strUrl = subRet["media_file"].asString();


		m_strImgBase64 = subRet.toStyledString();
		m_iState = 200;
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

老朱自强不息

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

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

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

打赏作者

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

抵扣说明:

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

余额充值