使用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}]}]}
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CJSON中,将JSON转换为字符串有两种方法。第一种方法是构建JSON结构,然后使用cJSON_Print函数将其转换为字符串。例如,你可以使用以下代码将JSON结构转换为字符串: ```c cJSON* json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "name", "json_test"); cJSON_AddNumberToObject(json, "num", 520); cJSON* arry = cJSON_CreateArray(); cJSON_AddItemToArray(arry, cJSON_CreateNumber(1)); cJSON_AddItemToArray(arry, cJSON_CreateNumber(2)); cJSON_AddItemToArray(arry, cJSON_CreateNumber(3)); cJSON_AddItemToObject(json, "arry", arry); char* json_str = cJSON_Print(json); printf("JSON字符串: %s\n", json_str); cJSON_Delete(json); free(json_str); ``` 第二种方法是直接将JSON结构转换为字符串,而不需要构建一个新的JSON结构。你可以使用cJSON_PrintUnformatted函数将JSON结构转换为字符串。例如,你可以使用以下代码将JSON结构转换为字符串: ```c cJSON* json = cJSON_Parse(json_str); char* json_str = cJSON_PrintUnformatted(json); printf("JSON字符串: %s\n", json_str); cJSON_Delete(json); free(json_str); ``` 无论你选择哪种方法,记得在使用字符串后,使用free函数释放内存。 #### 引用[.reference_title] - *1* *2* *3* [cjsonjson字符串的理解](https://blog.csdn.net/Mr_zhang1911116/article/details/122653977)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值