cjson

cJSON memory leak

拥有回忆 提交于 2019-12-19 10:52:30
问题 I use cJSON in my program to convert my values to JSON and write it to file. Here is the example of my code: void writeStructToFile(IOPipe this, struct structtype somevalues) { cJSON *jout = cJSON_CreateObject(); cJSON_AddItemToObject(jout, "V1", cJSON_CreateNumber(somevalues.v1)); cJSON_AddItemToObject(jout, "V2", cJSON_CreateNumber(somevalues.v2)); fprintf(this->outstream, "%s", cJSON_Print(jout)); cJSON_Delete(jout); } Works great, but after some time I found that Linux(embedded) kills my

cJSON学习笔记

只谈情不闲聊 提交于 2019-12-13 01:19:53
原文链接: https://blog.csdn.net/xukai871105/article/details/17094113 1.JSON格式简述 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。(来自“开源中国”资料) cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。 接触yeelink平台之后,慢慢接触到JSON格式,虽然一些简单的情况可以通过string库函数解析和组装JSON数据包,但是若有cJSON库的帮助,解析和组装JSON数据包的工作便会变得简单的多,下面就从两个例子出发说明cJSON数据包的使用方法。 【相关博文】 【前端学习——JSON格式详解】 【cJSON学习笔记 续集】 2.JSON结构体 熟悉使用cJSON库函数可从cJSON结构体入手,cJSON结构体如下所示: typedef

安转luajit 和 cjson模块

≡放荡痞女 提交于 2019-12-10 04:36:07
###安装luajit 从 luajit 下载源码,make && make install 顺利安装 缺省路径安装在/usr/local/ export LUAJIT_LIB=/usr/local/lib export LUAJIT_INC=/usr/local/include/luajit-2.0 # 版本号自行修改 ###安装cjson 从 cjson官网 下载源码 解压,编辑Makefile ,修改: LUA_INCLUDE_DIR = $(PREFIX)/include/luajit-2.0 $ make cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/include/luajit-2.0 -fpic -o lua_cjson.o lua_cjson.c cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/include/luajit-2.0 -fpic -o strbuf.o strbuf.c cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/include/luajit-2.0 -fpic -o fpconv.o fpconv.c $ sudo make install mkdir -p //usr/local/lib/lua/5

Using cJSON to read in a JSON array

ぐ巨炮叔叔 提交于 2019-12-09 04:20:44
问题 I am attempting to use the cJSON library, written by Dave Gamble, to read in the following JSON array: "items": [ { "name": "command", "index": "X", "optional": "0" }, { "name": "status", "index": "X", "optional": "0" } ] From reading his documentation, I found ways to read in individual Objects, but nothing regarding Arrays, and I wasn't able to surmise how to do it from the examples given. Here's what I'm trying: cJSON* request_json = NULL; cJSON* items = cJSON_CreateArray(); cJSON* name =

test

社会主义新天地 提交于 2019-12-06 02:18:35
本文系转载,原文地址 https://www.cnblogs.com/chineseboy/p/3959852.html <p><span style="background-color: #339966;">                                                                                                        缘      起                                                                                                     </span></p> 最近在stm32f103上做一个智能家居的项目,其中选择的实时操作系统是 rt_thread OS v1.2.2稳定版本,其中涉及到C和java(android)端数据的交换问题,经过讨论和研究,选择了json格式的数据进行交互。当然,如果自己去写一个json解析器,有点重造轮子的嫌疑。于是使用了开源的json解析器。考虑到是嵌入式平台,在一位朋友的推荐下,选择了轻量级别的cJSON。 使 用 cJSON 开源项目位置: http://sourceforge.net/projects/cjson/ cJSON,目前来说,就只有两个文件

CJSON

岁酱吖の 提交于 2019-12-05 05:17:53
参考文档: http://m.elecfans.com/article/798692.html 主要用来打包或解析成标准格式以用来在网络间的K-V数据结构的解析,是用双向链表实现的,还有子目录,结构比较简单,只要项目加载cjson.c/cjson.h即可。使用方法见参考文档,主要有: 一 打包:cJSON_Print申请一段内存返回一个指针,再进一步用snprintf传给C的字节buf,用字节流发出去,记得用cjson_free进行释放;     cJSON_creatobj()的对象记得用cJSON_delet()进行释放 二 解析:cJSON_Parse(message->load)对接收的数据先申请一段内存返回一个指针,再用cJSON_GetObjectItem()获得对象指针,然后用子子项和字符串匹配函数获得K和V,然后进行相应动作。 来源: https://www.cnblogs.com/jieruishu/p/11908917.html

Using cJSON to read in a JSON array

匿名 (未验证) 提交于 2019-12-03 02:48:02
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: I am attempting to use the cJSON library, written by Dave Gamble, to read in the following JSON array: "items" : [ { "name" : "command" , "index" : "X" , "optional" : "0" }, { "name" : "status" , "index" : "X" , "optional" : "0" } ] From reading his documentation , I found ways to read in individual Objects, but nothing regarding Arrays, and I wasn't able to surmise how to do it from the examples given. Here's what I'm trying: cJSON * request_json = NULL ; cJSON * items = cJSON_CreateArray (); cJSON * name = NULL ; cJSON * index =

openresty实现图片(文件)服务器

匿名 (未验证) 提交于 2019-12-03 00:37:01
点击打开链接 该功能是利用openresty的lua脚本实现的图片(文件)保存功能,文件上传使用java代码开发的 上传数据和文件信息不分前后,但系统只会保存最后一对信息 数据格式: {" fileDir ": "文件保存的目录" ," fileName ": "文件名" } 1 返回结果 { "status" : "是否成功" , "result" : "返回结果" , "msg" : "异常原因" } enum status:[ "success" , "failed" ] 所保存到那个文件夹下,在nginx的perfix变量中定义 如下: server { listen 80 ; server_name localhost; # 配置保存的文件夹 set $prefix "/data" ; location /uploadimage { # 配置是否每次lua更改都生效,适合调试时使用 # lua_code_cache off; # 配置lua脚本 content_by_lua_file /openresty-web/luascript/luascript; } # 用来配合理解传入到nginx的报文结构 location /uploadtest{ # lua_code_cache off; content_by_lua_file /openresty-web

cJSON详细剖析(六)----print_string_ptr()函数(补充)

匿名 (未验证) 提交于 2019-12-03 00:09:02
我又重新把之前的写的博客看了一遍,写的是什么狗屁,我自己看得都费劲,这里我重开一博客把之前在剖析(四)里的内容摘取出来。 在分析print_object()函数时,对于出现的print_String_ptr()函数,我们做进一步的分析。下面就是print_String_ptr()函数,我已经贴好了注释,针对给定的text文件,就返回"\"name\""了。 当然,上述针对的给定的text字符串,刚好满足if(iflag)条件,所以就直接输出了,接下来我们分析一下未满足条件的,也就是flag为1的时候。这就是,在上图的黄色框中的部分的条件成立的,即可以字符串的第一个字符是双引号或反斜杠或者ASCII码小于32的,我们先看看小于32的ASCII码包括哪些内容,如下图: 有点长,我就不全贴出来了(给个地址: http://ascii.911cha.com/?year=13 ),可以看到,都是一些控制字符串,非显示字符串,控制字符是用来实现特定操作的,如一些比较常用的控制字符就是ESC、BACKSPACE(删除上一个字符)、Del(删除当前字符)、回车符、换行符等。 好了,我们回到代码部分,首先判断是不是空串,如果是就直接输出俩双引号。 差不多就分析这么多吧。加油加油! 来源:51CTO 作者: 你看那人好像条狗耶 链接:https://blog.csdn.net/qq_40963043

解析形如["1","2","3","4"]的json数据

故事扮演 提交于 2019-12-02 15:09:34
int cjson_parse(char *json_data) { cJSON *json,*item; int i; json=cJSON_Parse(json_data); if (!json) { printf("Error before: [%s]\n",cJSON_GetErrorPtr()); return -1; } else { int size=cJSON_GetArraySize(json); for(i=0;i<size;i++) { item=cJSON_GetArrayItem(json,i); //atoi(item->valuestring)等到整数, } } } 来源: https://blog.csdn.net/hairubb/article/details/102778242