几乎全平台的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之前,我们应该先从该网 ...
随机推荐
- 华为云云日志服务 HarmonyOS NEXT采集最佳实践
鸿蒙背景介绍 华为鸿蒙HarmonyOS系统是面向万物互联的全场景分布式操作系统,支持手机.平板.智能穿戴.智慧屏等多种终端设备运行,提供应用开发.设备开发的一站式服务的平台.2024 年 1 月 1 ...
- Teable 团队 Sealos 最佳实践,创业公司的完美选择
大家好,我是开源多维表格项目 Teable 的创始人陈加贝. 作为飞书多维表格的最早期负责人,我参与并见证了这个产品从 0 到 1 的全过程.这段经历也让我深入理解了企业在数据协作方面的真实需求. 以 ...
- 零基础学习人工智能—Python—Pytorch学习(十一)
前言 本文主要介绍tensorboard的使用. tensorboard是一个可视化的,支持人工智能学习的一个工具. tensorboard的官方地址:https://www.tensorflow.o ...
- Docker安装开源版obs对象存储服务minio,并后台运行
>Minio 是一个基于Apache License v2.0开源协议的对象存储服务,虽然轻量,却拥有着不错的性能.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据. 例如 ...
- 基于知识图谱的医疗问答系统(dockerfile+docker-compose)
目录 一.搭建 Neo4j 图数据库 1.方式选择 2.Dockerfile+docker-compose部署neo4j容器 2.1.更新 yum 镜像源 2.2.安装 docker-ce 社区版 2 ...
- 性能测试 -- docker部署grafana
一.前提 1.安装好了docker 2.docker内 和 jmeter脚本 全都已经部署好了influxdb,并且数据采集等都正常 二.docker 部署 grafana 的操作步骤 1.下载 do ...
- startup
要提取startup/后面的字符,可以使用cut命令或awk命令.以下是两种方法: 使用cut命令: bash #!/bin/bash # 给定的字符串 STR1="startup/valu ...
- 把 Windows 装进 Docker 容器里
本篇文章聊聊如何在 Docker 里运行 Windows 操作系统, Windows in Docker Container(WinD). 写在前面 我日常使用 macOS 和 Ubuntu 来学习和 ...
- Navicat Premium15安装与激活
Navicat premium是一款数据库管理工具,是一个可多重连线资料库的管理工具,它可以让你以单一程式同时连线到 MySQL.SQLite.Oracle 及 PostgreSQL 资料库,让管理不 ...
- 【网络安全】Linux基础详解
声明:学习视频来自 b 站 up 主 泷羽 sec,如涉及侵权马上删除文章 声明:本文主要用作技术分享,所有内容仅供参考.任何使用或依赖于本文信息所造成的法律后果均与本人无关.请读者自行判断风险,并遵 ...