首页
学习
活动
专区
圈层
工具
发布

cJSON基础介绍与代码测试

在介绍cJSON之前,首先来认识一下JSON... 01 JSON是什么 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。...Types: */ #define cJSON_False 0 #define cJSON_True 1 #define cJSON_NULL 2 #define cJSON_Number 3 #define...又是个啥 cJSON是一个基于C的JSON解析库,这个库非常简短,源码内容只包含:一个cJSON.h头文件和一个cJSON.c源文件,支持JSON的解析和封装,需要调用时,只需要#include "cJSON.h...解析JSON数据时,首先要调用cJSON_Parse()这个函数,将JSON数据解析为cJSON型的对象: cJSON *srcJsonData = cJSON_Parse(jsonData); 然后就可以使用...这次会用到cJSON_GetObjectItem()、cJSON_GetArrayItem()、cJSON_GetArraySize()、cJSON_Print()等函数。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【漏洞通报】cJSON 越界访问漏洞

    漏洞情况近期,火山信安实验室监测发现,,广泛使用的轻量级C语言JSON解析库cJSON存在高危漏洞(编号CVE-2025-57052,CVSS评分9.8)。...该漏洞源于cJSON_Utils.c文件中的decode_array_index_from_pointer函数,攻击者可构造畸形JSON指针绕过数组边界检查,导致内存越界访问、段错误、权限提升或拒绝服务攻击...这种越界行为可能直接导致服务崩溃(段错误),或在特定场景下允许攻击者读取或篡改预期范围外的内存数据,实现权限提升或敏感信息泄露;更进一步,攻击者还可利用cJSON与标准atoi函数在解析逻辑上的差异,绕过应用层预设的安全检查机制...0x02影响范围所有使用cJSON解析JSON指针的软件均可能受影响0x03修复方案代码修正,确保指针字符串中的每个字符在被解析为数组索引前均经过正确验证,避免非数字字符被误解析立即升级到cJSON官方发布的最新安全版本对用户输入的

    18910

    cJSON的使用方法

    首先,要介绍一下什么是json格式。 一.JSON格式简述 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。...cJSON,目前来说,就只有两个文件,一个cJSON.c 一个cJSON.h文件。使用的时候,自己创建好一个main.c文件后,将头文件include进去。...二.JSON结构体 熟悉使用cJSON库函数可从cJSON结构体入手,cJSON结构体如下所示: typedef struct cJSON { struct cJSON *next,*prev;...cJSON作为Json格式的解析库,其主要功能无非就是构建和解析Json格式了,用途就是一端将要发送的数据已cjson形式封装,然后发送,另一端收到此数据后,还是按cjson形式解析,就得到想要的数据了...= cJSON_CreateArray()); cJSON_AddItemToArray(js_body, js_list = cJSON_CreateObject()); cJSON_AddStringToObject

    2.2K10

    使用cJSON解析JSON字符串

    JSON学习-使用cJSON解析 使用cJSON解析JSON字符串 一、为何选择cJSON          我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建...二、cJSON的核心结构体          cJSON的核心结构体就是一个cJSON,理解了这个结构体,基本上对cJSON的使用就有了个基本概念了。...2,包含cJSON的源码;          下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。...对于这个简单的例子,只需要调用cJSON的三个接口函数就可以实现解析了,这三个函数的原型如下: cJSON*cJSON_Parse(const char *value); cJSON*cJSON_GetObjectItem...cJSON*item=cJSON_GetObjectItem(root,"firstName");  (3)       如果需要使用cJSON结构体中的内容,可通过cJSON结构体中的valueint

    19.4K100

    cmake:VS2015和GCC编译cJSON

    cJSON是基于ANSI C的跨平台JSON解析开源库,在嵌入式应用中使用比较广泛, cJSON支持CMAKE编译,本文以脚本形式提供了使用CMAKE基于VS2015/Windows以及GCC/MinGW...源码文件夹与msvc_build.bat脚本在同一级文件夹 执行以下脚本会编译出cJSON动态库、静态库,以及Debug和Release版本并安装到 release\cJSON_windows_vc_x86...源码文件夹与gnu_build.sh脚本在同一级文件夹 执行以下脚本同会编译出cJSOn动态库、静态库,并安装到release/cJSON-$machine 文件夹下 如果未指定环境变量BUILD_TYPE...如果你只想编译cJSON,可以如下直接克隆 https://gitee.com/l0km/cjson.build.git 这个项目到本地(一定要加--recursive参数) git clone --...recursive https://gitee.com/l0km/cjson.build.git 然后执行其中的msvc_build.bat或gnu_build.sh就可以编译出你想要的cJSON库

    1.6K10

    全面详解c语言使用cJSON解析JSON字符

    先来介绍四个常用的cJSON函数: cJSON *cJSON_Parse(const char *value); 作用:将一个JSON数据包,按照cJSON结构体的结构序列化整个数据包,并在堆中开辟一块内存存储...cJSON结构体 返回值:成功返回一个指向内存块中的cJSON的指针,失败返回NULL cJSON *cJSON_GetObjectItem(cJSON *object,const char *string...//打包成功调用cJSON_Print打印输出 cJSON_Print(cjson); } 然后依次获取json字符串中的每个字段的值并打印输出 //cJSON_GetObjectltem返回的是一个cJSON..."arr_3" }, { "test_1":"1", "test_2":"2", "test_3":"3" } }], "test_3" :"3" }//json_arr string 在开始前介绍一个函数...//打包成功调用cJSON_Print打印输出 cJSON_Print(cjson); } //获取数组对象 cJSON* test_arr = cJSON_GetObjectltem(cjson,"

    8.4K50
    领券