最近在研究8266,用来采集数据上传到云服务器,其中数据传输需要用到json,第一次弄也是是比较费劲,还好不是很难,大致看一下也就明白了,下面写出来给自己做一个笔记。
首先我们要想到,json里面,最小的结构就是一个对象,对象里面有键,和键值,这个和java有点像。
举个例子:{“key”:“value”}
这就是一个对象了,一个json的最小单位,键就是这个对象的名称,值就是这个对象的值,(好像有点啰嗦),值可以是数组,也可以是是对象,是可以嵌套的。
下面举例如何创建json字符串:
static void post_data_to_clouds(void)
{
cJSON *pMain = cJSON_CreateObject(); //首先创建一个对象,后面的数据都会填充到这里面
cJSON *pArray = cJSON_CreateArray(); //数组
cJSON *pArray2 = cJSON_CreateArray(); //数组
cJSON *pItem = cJSON_CreateObject(); //对象,存放临时生成的数据
cJSON *pItem1 = cJSON_CreateObject();
cJSON_AddStringToObject(pItem, "id", "LED"); //往对象里面添加字符串类型的数据
cJSON_AddNumberToObject(pItem1, "valuse", 123);//往对象里面添加数字类型的数据
cJSON_AddItemToArray(pArray2,pItem1);
cJSON_AddItemToObject(pItem,"datapoints",pArray2);//将数组“pArray2”添加到“pItem”并给定键“datapoints”
cJSON_AddItemToArray(pArray,pItem); //将对象“pItem”添加到数组pArray
cJSON_AddItemToObject(pMain, "datastreams", pArray); 将数组“PArray”添加对象pMain
char *pStr;
pStr = cJSON_Print(pMain);
printf("json is:\r\n%s\r\n", pStr);
cJSON_free(pMain); //记得释放内存
cJSON_free(pArray);
cJSON_free(pItem);
cJSON_free(pItem1);
cJSON_free(pStr);
//得到数据{"datastreams":[{"id":"LED","datapoints":[{"valuse":123}]}]}
}