Linux下通过jsoncpp和socket解析和发送json数据的使用例程

12 篇文章 0 订阅

目录

 

1、json数据解析

2、json数据生成

3、json类型判断函数,判断key的类型函数


 

1、json数据解析

    Json::CharReaderBuilder rbuilder;
    Json::CharReader* reader = rbuilder.newCharReader();
    Json::Value root;
    bool parse_ok;
    string str;

    str=readFileIntoString();	//从json文件读取
	parse_ok = reader->parse(str.c_str(),str.c_str() + str.length(), &root, &errs);
	if(!parse_ok)
	{
		printf("parse json error: %s\n",errs.c_str());
		return 0;
	}else
	{
		companyid = atoi(root["companyid"].asCString());
		printf("companyid:%d\n",companyid);
		char *ip = (char*)root["ip"].asCString();
		strcpy(SERVER_IP,ip);
    }

运行结果:

 

2、json数据生成

int tcpc_send(int socketfd)
{
	Json::Value root;
	Json::Value json_array;
	Json::StreamWriterBuilder builder;
	string str;
	int ret;

	Json::OStringStream oss;
	std::unique_ptr<Json::StreamWriter> writer(builder.newStreamWriter());
		
	root["name"] = "robben";
	root["msgID"] = "123";
	json_array[0] = "weifang";
	json_array[1] = "shanghai";
	root["city"] = json_array;
	writer->write(root,&oss);
	str = oss.str();
	ret = send(socketfd,str.c_str(),str.length(),0);

	return ret;
}

运行结果:

 

3、json类型判断函数,判断key的类型函数

 

判断为空:if(root["name"].type() == Json::nullValue)

判断存在:if(root["name"].isNull())或者if(root.isMember(“name”))

判断是string:root["name"].isString

判断是数组:root["name"].isArray()

 

over...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值