使用cJSON创建json字符串数据

最近在研究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}]}]}
}

 

你可能感兴趣的:(8266)