Linux下通過jsoncpp和socket解析和發送json數據的使用例程

目錄

 

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...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章