几乎全平台的C语言JSON解析工具cJSON[转载]
最近在做一个外设管理平台,用PYTHON写了一个连接管理,兼容串口和套接字的连接,然后抽象为设备统一管理。使用套接字时JSON是一种很好的数据封装类型,假设我需要远程操控一个设备,发送一个JSON的数据包就可以了,像这样:
{"command":"命令","args":[各种控制参数]}
当远端设备的接收程序是使用JAVA、PYTHON这种类型程序编写的时候,解析JSON格式一般不会有大的问题,但当远程设备是能使用C语言来编写时,如一些单片机,IOT等嵌入式设备时,难道手写解析工具?
幸好有神仙为我们做了这件事情,他的主页在这里:
主角:
https://github.com/DaveGamble/cJSON
cJSON使用MIT许可证,使用起来还是很自由的,他为了兼容一些C语言编译器,编写时使用的是C89标准,这意味着类似C51之类的东西也可以编译其源代码。
一般情况下将其项目目录下的cJSON.c和cJSON.h复制到自己的项目目录下,使用即可。
注:需要动态开辟空间,事先需要支持或者实现malloc和free函数。
cJSON使用链式存储的结构,按照自己的数据格式逐层解析即可。
例如我要解析一个数据包来操控机械臂:
1 {"command":"M","args":[750,750,750,750]}
2 //先将json字符解析成cJSON结构体:
3 cJSON *myJson = cJSON_Parse((const char *)USART_RX_BUF);
4 //提取出"command"这个字段:
5 char *command = cJSON_GetObjectItem(myJson,"command")->valuestring;
6 //获取"args"字段的数组
7 cJSON *args = cJSON_GetObjectItem(myJson,"args");
8 //逐个获取其中的数值
9 args_number = cJSON_GetArraySize(args);
10 for(count = 0; count < args_number;count++)
11 {
12 CurrentArgs[count] = cJSON_GetArrayItem(args,count)->valueint;
13 }
简单好用
————————————————
版权声明:本文为CSDN博主「soulburn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/soulburn/article/details/102685503
几乎全平台的C语言JSON解析工具cJSON[转载]的更多相关文章
- JSON解析工具比较,主要GSON和FastJSON
JSON解析工具比较,主要GSON和FastJSON 一 .各个JSON技术的简介和优劣 1.json-lib json-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确 ...
- [转] 各种Json解析工具比较 - json-lib/Jackson/Gson/FastJson
JSON技术的调研报告 一 .各个JSON技术的简介和优劣1.json-libjson-lib最开始的也是应用最广泛的json解析工具,json-lib 不好的地方确实是依赖于很多第三方包,包括com ...
- Json解析工具Jackson(使用注解)
原文http://blog.csdn.net/nomousewch/article/details/8955796 接上一篇文章Json解析工具Jackson(简单应用),jackson在实际应用中给 ...
- JSON 解析工具的封装(Java)
JSON 解析工具的封装(Java) 一直想有一个属于自己的JSON工具,今天终于弄好了..... 1.添加pom依赖包 <!--json解析--> <dependency> ...
- 自定义Json解析工具
此博客为博主原创文章,转载请标明出处,维权必究:https://www.cnblogs.com/tangZH/p/10689536.html fastjson是很好用的json解析工具,只可惜项目中要 ...
- java后台常用json解析工具问题小结
若排版紊乱可查看我的个人博客原文地址 java后台常用json解析工具问题小结 这里不细究造成这些问题的底层原因,只是单纯的描述我碰到的问题及对应的解决方法 jackson将java对象转json字符 ...
- Gson json解析工具
json 解析工具 ,谷歌出品 对象转换字符串 HashMap<String,String> hashMap = new HashMap<String, String>(); ...
- JSON解析工具-org.json使用教程
转自:http://www.open-open.com/lib/view/open1381566882614.html 一.简介 org.json是Java常用的Json解析工具,主要提供JSONO ...
- Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解
Json解析工具Jackson(使用注解)--jackson框架自定义的一些json解析注解 @JsonIgnoreProperties 此注解是类注解,作用是json序列化时将Javabean中的一 ...
- Java:JSON解析工具-org.json
一.简介 org.json是Java常用的Json解析工具,主要提供JSONObject和JSONArray类,现在就各个类的使用解释如下. 二.准备 1.在使用org.json之前,我们应该先从该网 ...
随机推荐
- Gitlab:Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm
Restoring PostgreSQL database gitlabhq_production ... ERROR: must be owner of extension pg_trgm ERRO ...
- Vuex 面试题(2023-09-13更新)
谈谈你对 Vuex 的理解 什么是 Vuex? vuex 是 Vue 应用程序开发的状态管理插件,它采用集中式存储,管理应用的所有组件的状态 Vuex 解决了什么问题? 多个组件依赖于同一状态时,多层 ...
- MatLab R2023a 安装激活
解压 下载压缩包后解压得到以下内容: Setup文件夹里面存放的是 安装包,用于安装MatLab Crack文件夹里面存放的是 激活文件,包括libmwlmgrimpl.dll,license.lic ...
- Kerberos认证代码分析Can't get Kerberos realm
1. Can't get Kerberos realm 原因分析: 原始代码为: 1 2 org.apache.hadoop.security.UserGroupInformation.setConf ...
- 【转载】 DirectByteBuffer内存释放
http://www.tianshouzhi.com/api/tutorials/netty/331 我们已经知道,在网络编程中,为了避免频繁的在用户空间与内核空间拷贝数据,通常会直接从内核空间中申请 ...
- Compile error: Cannot find a C++ compiler that supports both C++11 and the specified C++ flags
reno@MyComputer:~/tools/cmake-3.12.4$ ./configure --------------------------------------------- CMak ...
- 龙哥量化:通达信常用指标写法macd数值太小怎么办macd的数值是0.01怎么放大
1.先放公式 MACD 放大坐标系 1000倍 参数 12.26.9DIF:EMA(CLOSE*1000,12)-EMA(CLOSE*1000,26);DEA:EMA(DIF,9);MACD:(DIF ...
- Vetur can't find `tsconfig.json` or `jsconfig.json` in XXX
vue界面启动项目 visual code报错 如下图,找到 Ignore Project Warning 前边打上对勾
- 大型IM工程重构实践:企业微信Android端的重构之路
本文由腾讯技术yeconglu分享,原题"企业微信大型Android系统重构之路",下文进行了排版和内容优化等. 1.引言 企业微信本地部署版(下文简称为本地版)是从2017年起, ...
- 刚学完Vue收集的库或项目分享
最近刚看完一个Vue3的视频教程,还不错,整理最近收集与Vue相关的库或项目. awesome-vue:与 Vue.js 相关的精彩内容精选清单.https://github.com/vuejs/aw ...