将cJSON用到STM32f103上

cJSON内存管理使用的是标准库stdlib.h的malloc()free()realloc()动态内存管理函数,我STM32F103使用的是正点原子的malloc.c文件里的myfree() mymalloc()函数

1、修改内容文件Cjson.c 

cJSON_Delete(root);//出错
cJSON_GetObjectItemCaseSensitive(testjson, "Mac");//申请内存失败

修改内容:

//被修改部分
//#define internal_malloc malloc
//#define internal_free free
//#define internal_realloc realloc #define internal_malloc mymalloc
#define internal_free myfree
#define internal_realloc myrealloc

否则会内存出错。

2、cjson数组问题:

  (1){"mac":"1234"}  valuestring 

  (2){"card":["1235","2345"]} ARRAY

  (3)注意是双引号 ,否则cJSON_Parse()解析返回的指针参数未null。

3、

cJSON *testjson;
cJSON *testjsonmac;// MAC地址
testjson=cJSON_CreateObject();
testjson = cJSON_Parse(my_json_string)
testjsonmac=cJSON_GetObjectItemCaseSensitive(testjson, "mac");
cJSON_Delete(testjson);
cJSON_CreateObject()函数内部会动态申请一定字节的内存,所以最后解析完毕之后一定要释放内存cJSON_Delete(testjson),cJSON_Delete()函数内部会调用函数free();testjsonmac的地址时申请了内存的指针testjson指向的那块内存里的其中一个地址,不用为
testjsonmac申请内存。

cJSON使用笔记的更多相关文章

  1. cJSON学习笔记

    1.JSON格式简述 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解析和生成.它基于JavaScript(Standa ...

  2. cJSON学习笔记 续集

    0.前言     本文试图说明怎样使用CJSON构造各种各样的JSON数据包.在前段时间已经写过一篇cJSON的文章,所以本文成为"续集".     [相关博文]     [前端学 ...

  3. cJSON 使用笔记

    缘      起 最近在stm32f103上做一个智能家居的项目,其中选择的实时操作系统是 rt_thread OS v1.2.2稳定版本,其中涉及到C和java(android)端数据的交换问题,经 ...

  4. 【转】cJSON 使用笔记

     缘      起       最近在stm32f103上做一个智能家居的项目,其中选择的实时操作系统是 rt_thread OS v1.2.2稳定版本,其中涉及到C和java(android)端数据 ...

  5. JSON构造/解析(by C)---cJSON和json-c

    背景 JSON即JavaScript Object Notation,是一种轻量级的数据交换格式. JSON建构于两种结构: "名称/值"对的集合(A collection of ...

  6. PHP再学习5——RESTFul框架 远程控制LED

    0.前言     去年(2013年)2月第一次接触yeelink平台,当时该平台已经运行了一些时间也吸引了不少极客.试想自己也将投身IoT(物联网)行业,就花了些时间研究了它.陆陆续续使用和研究了一年 ...

  7. 【转】cJSON 源码阅读笔记

    前言 cjson 的代码只有 1000+ 行, 而且只是简单的几个函数的调用. 而且 cjson 还有很多不完善的地方, 推荐大家看完之后自己实现一个 封装好的功能完善的 cjson 程序. json ...

  8. cJSON笔记

    github地址: https://github.com/DaveGamble/cJSON 需要将cJSON.h 和 cJSON.c拷贝到路径下,并且连接所需库文件 -lm 步骤:1.先将普通的jso ...

  9. cJSON 库的使用和优化

    部门的产品使用自己公司研发的系统,嵌入式web服务器移植的是goahead2.5的,服务器和前端使用JSON交互,移植的cJSON库,所以这段时间对JSON的使用做个简单的笔记,cJSON.h提供出来 ...

随机推荐

  1. [易学易懂系列|golang语言|零基础|快速入门|(一)]

    golang编程语言,是google推出的一门语言. 主要应用在系统编程和高性能服务器编程,有广大的市场前景,目前整个生态也越来越强大,未来可能在企业应用和人工智能等领域占有越来越重要的地位. 本文章 ...

  2. 对table最后一行显示与隐藏

    //显示table最后一行,如果用block的话,可能会影响到页面的样式 $("#table tr").get($("#table tr").length - ...

  3. java日志文件log4j.properties配置详解

    一.Log4j配置 第一步:加入log4j-1.2.8.jar到lib下. 第二步:在CLASSPATH下建立log4j.properties.内容如下: 放在src下的话就不用配置 否则得去web. ...

  4. spring security基本知识(四) WebSecurity

    1.创建一个Filter   现在web.xml文档中声明一个filter class="org".springframework.web.filter.DelegatingFil ...

  5. Python---协程---重写多进程

    一. # 匹配一行文字中所有开头的字母import re s = 'i love you but you don\'t love me' # \b\m findallcontent = re.find ...

  6. es之java插入优化(批量插入)

    插入文档操作的一种优化,因为每次插入单条文档,都会向es中发送请求.然后es执行在返回结果: 如果有大批量的文档数据需要插入,这个时候单挑插入操作显然是不合理的: 之前学习的命令行批量执行方式: PO ...

  7. 9-10 November

    cout 和 printf 在 C++ 中的实现:四舍六入五随缘.比如 printf("%.0lf\n", x=1.5) => 1. 标准做法:printf("%d ...

  8. 大数据笔记(四)——操作HDFS

    一.Web Console:端口50070 二.HDFS的命令行操作 (一)普通操作命令 HDFS 操作命令帮助信息: hdfs dfs + Enter键 常见命令 1.  -mkdir 在HDFS上 ...

  9. bootstrap插件bootstrap-select使用demo

    插件bootstrap-select官网 : https://developer.snapappointments.com/bootstrap-select/ bootstrap-select插件: ...

  10. 在bash脚本的for i in编写中将点号``写成单引号‘’或者双引号“”会有什么后果?

    编写一个测试脚本: 输入启动命令:https://blog.csdn.net/zhoucheng05_13/article/details/test.sh,结果报错 使用的是root用户,但是仍然提示 ...