cJSON库的简单使用

172 阅读1分钟

就刚好写了一个接口,其中用到json结构。查了很多资料,懂了一点,记录一下

//代码简写
cJSON *root;
cJSON *forceast;

std::vector<STSigNal>::iterator iter;
forceast = cJSON_CreateArray();//创建一个JSON数组

//在其他地方存好的数据vec,循环生成对象数据
for (iter = vec.begin(); iter != vec.end(); iter++)
{
	STSigNal ptr = *iter;
	cJSON *data; 
	data = cJSON_CreateObject();//创建一个JSON对象

	cJSON_AddStringToObject(data, "meterId", ptr.strSignalID.c_str()); //ID
	cJSON_AddStringToObject(data, "type", ptr.strSignalType.c_str());  //测点值类型
	cJSON_AddStringToObject(data, "val", ptr.fDataValue.c_str());	   //测点值

	cJSON_AddItemToArray(forceast, data); ////把对象加入到对象
}

root = cJSON_CreateObject(); //创建一个JSON对象

cJSON_AddItemToObject(root, "meterInfo", forceast);//把数据加入到对象
char *meterInfoList = cJSON_Print(root);//格式化输出JSON对象
pritnf("meterInfoList:\n%s\n", meterInfoList );
cJSON_Delete(root);////删除cjson对象,释放链表占用的内存空间
cJSON_free(meterInfoList);//调用cJSON_Print后一定要释放内存,免得内存泄漏

/*----------------------最终的JSON格式如下--------------------------------
{
	"meterInfo":[
		{
			"meterId":"101021001",
			"type":"int",
			"val":"66"
		},
		{
			"meterId":"101021002",
			"type":"double",
			"val":"69.22"
		},
		{
			"meterId":"101021003",
			"type":"string”,
			"val":"test"
		}
	]
}
*/