# mRjson **Repository Path**: wild_coder/mRjson ## Basic Information - **Project Name**: mRjson - **Description**: 用变参函数实现的,短小易用的,json解析库 - **Primary Language**: C - **License**: WTFPL - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 0 - **Created**: 2022-09-09 - **Last Updated**: 2024-03-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mRjson v0.2 #### 介绍 用变参函数实现的,短小简单的,json解析库,适用于嵌入式设备等 - 只需要一个变参函数`mRjson_Decode()` - 用参数指定被解析json目标, 层级,键值, 解析类型和保存缓冲 - 支持json嵌套格式 #### 依赖 - string.h - stdlib.h - stdarg.h #### 参数说明 - %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值解析示例 ```c mRjson_Decode("%J%I%T%R",json,"size","D",&tmp); ``` - double浮点型解析示例 ```c mRjson_Decode("%J%I%T%R",json,"double","F",&ftmp); ``` - str字符串解析示例 ```c mRjson_Decode("%J%I%T%R",json,"str","S",&ss[0]); ``` - 嵌套格式字符串解析实例,`array[1]->content->hello` ```c mRjson_Decode("%J%I%A%G%I%T%R",json,"array","1","content","hello","S",&ss[0]); ``` - 示例文件:`main.c`, 实例的`json`字符串见源文件