README.md
mRjson v0.2
介绍
用变参函数实现的,短小简单的,json解析库,适用于嵌入式设备等
- 只需要一个变参函数
mRjson_Decode()
- 支持json嵌套格式
- 用参数指定被解析json对象, 层级,键值, 解析类型和保存缓冲
- 不需要使用动态内存
依赖
需要以下头文件来提供标准格式转换、变参处理,所以理论上能提供下面这几个头文件的编译器都能使用本json库,如51、stm32、linux、win等。
- stdio.h
- string.h
- stdlib.h
- stdarg.h
已测试平台
硬件平台 | 测试平台 |
---|---|
win10 | gcc |
ubuntu | gcc |
esp8266 | ubuntu esp8266-idf rtos-sdkv3.4 |
参数说明
- %J: json字符串
- %I: 键字符串, 指定子项, 包括数组子项
- %A: 嵌套格式使用, 指定数组下标
- %G: 嵌套格式使用,指定键值对象
- %T: 解析目标类型
- D: int整形
- F: double浮点型
- S: 字符串
- %R: 保存缓冲
注意
- 上述参数大小写通用, 如
%J
和%j
效果相同 -
%J
参数必须放在首位 -
%T
和%R
参数放参数组结尾, 且先指定解析类型,后指定保存参数 -
%I
,%A
,%G
参数需要严格按照层级解析使用 - 普通键直接使用
%I
指定 - 数组键先使用
%I
指定子项, 再用%A
指定数组下标 - 键值依然为非数组对象的键使用
%G
指定
源码比较简单,建议看代码,可以自定义实现自己的特定功能
示例
- int值解析示例
mRjson_Decode("%J%I%T%R",json,"size","D",&tmp);
- double浮点型解析示例
mRjson_Decode("%J%I%T%R",json,"double","F",&ftmp);
- str字符串解析示例
mRjson_Decode("%J%I%T%R",json,"str","S",&ss[0]);
- 嵌套格式字符串解析实例,
array[1]->content->hello
mRjson_Decode("%J%I%A%G%I%T%R",json,"array","1","content","hello","S",&ss[0]);
- 示例文件:
main.c
, 实例的json
字符串见源文件