【discuz源码站】【软件逆向看源码】【shell编程笔记源码】cjson源码 教程

时间:2024-11-15 06:03:57 来源:htp查源码 分类:焦点

1.Linux下cJSON安装及使用
2.ESP32开发解析JSON,码教这里用cJSON
3.cJSON源码解析 - 数据存储方式
4.Linux下的码教工程管理——CMake学习指南,手把手教你入门建议新手收藏

cjson源码 教程

Linux下cJSON安装及使用

       Linux下cJSON的码教安装与使用详解

       JSON,全称JavaScript Object Notation,码教是码教一种轻量级的数据交换格式,以其易读性、码教discuz源码站简洁性而广受欢迎。码教其数据结构由键值对组成,码教键被双引号包围,码教键值之间用冒号分隔,码教支持两种主要类型:对象和数组。码教

       对象用花括号{ }标识,码教如{ "key1": "value1",码教 "key2": "value2"},键是码教对象的属性,值则是码教对应的值。数组则用中括号[]表示,如["value1",软件逆向看源码 "value2", "value3"]。

       cJSON在C语言中的应用

       cJSON是一个C语言编写的库,专为处理JSON数据格式提供解析、创建等功能。

       安装步骤

       首先,从cJSON官网下载源码文件。

       库函数详解

创建:用于生成JSON对象或数组。

解析:将JSON字符串转化为C语言结构。

打印:将C语言结构转化为JSON字符串。

释放:释放内存,终止对象或数组的使用。

添加:在对象中添加新的键值对。

获取:从对象中获取特定键对应的值。

       编程示例

       在实践中,我们可以通过以下两个文件来体验cJSON的运用:

json_decode.c:演示如何使用cJSON的解析功能。

json_encode.c:展示如何通过cJSON创建JSON对象或字符串。

       编译这两个示例时,shell编程笔记源码请确保添加链接库-lcjson和-lm,否则编译可能失败。

ESP开发解析JSON,这里用cJSON

       cJSON是什么?

       cJSON是C语言领域中的一款超轻量级JSON解析库。它开源于GitHub,遵循MIT协议,对使用友好。

       与Python的json库、Java的Gson、jackson、fastjson等解析器类似,cJSON同样能解析JSON数据。

       cJSON的源码由一个头文件和一个源文件组成,极为简洁。

       JSON的基本概念:

       JSON对象是无序的键值对集合,以"{ “开始,成都直播平台源码以”}"结束,允许嵌套使用。

       1. 名称和值成对出现,名称与值之间使用":"分隔。

       2. 键值对之间用","分隔。

       3. 字符前后允许存在无意义的空白符。

       4. 键值可为数组、数字、字符串、字面值(false、null、true,需小写)。

       VSCode验证cJSON:

       前提:VSCode已配置C/C++开发环境,插件及编译器设置完成。

       克隆cJSON源码,c语言源码游戏用VSCode打开。仅需改动vscode的配置文件tasks.json,改动如下图所示。

       配置后,从test.c直接编译,通常不会出现编译错误。

       新增函数测试JSON解析,代码如下:

       运行结果如下:

       IDF中引入cJSON:

       cJSON位于IDF的components\json\cJSON目录下。

       cJSON常用方法概览:

       1. 解析数据:验证JSON格式 > 解析数据 > 释放内存

       2. 创建数据:创建JSON结构体 > 添加数据 > 释放内存

       务必记得释放内存。

       

参考资料:

       ESP学习笔记()--JSON接口使用_esp cjson-CSDN博客

       vscode运行cjson(自用)_vscode c.json-CSDN博客

cJSON源码解析 - 数据存储方式

       cJSON通过双向链表结构来组织数据,类似于一棵无序且可嵌套的键值对树。每个节点都有next和prev指针,分别指向其兄弟节点,这样在树中可以通过这些指针轻松查找。只有当节点是对象或数组时,才会存在child指针,用于访问下一层的子节点。

       数据的存储方式具体如下:每个节点包含string类型用于存储键名,valuestring、valueint、valuedouble分别对应不同类型的内容。cJSON定义了多种结构类型,每一种类型(如cJSON_Creatxxx)都对应一个cJSON结构实例。

       为了更直观地理解数据的组织,考虑以下示例:每个cJSON实例在内存中以这样的形式相连(简化版的图示省略):

Linux下的工程管理——CMake学习指南,手把手教你入门建议新手收藏

       Linux下的工程管理利器——CMake入门教程,手把手带你快速掌握

       CMake是一个强大的编译配置工具,相较于传统的make,它能根据平台和编译器差异自动生成Makefile或项目文件。通过编写CMakeLists.txt,你可以灵活控制编译流程,包括构建、安装、测试和打包等高级功能,即使面对嵌套目录也能轻松应对。比如,KDE项目就是使用CMake构建的,值得一试。

       虽然make等工具也有相似功能,但CMake以其简单灵活的工具链和跨平台支持,被许多知名项目采用。尤其适合C、C++或Java等项目的构建。现在,我们来看看如何安装和使用CMake:

       首先,从cmake.org/download/下载CMake安装包。

       对于CMake-gui的使用,安装后可以直观配置,不过本文主要讲解命令行操作。

       以一个简单的示例来说明,首先创建hello_cmake.c和CMakeLists.txt文件,然后使用cmake命令行指定源代码路径和目标生成器,如cmake -G "Visual Studio " E:\workplace\cmake。

       需要注意的是,Cygwin下的CMake可能需要处理警告或报错。在Unix系统中,CMake步骤如下:

       查看CMake命令行选项,如cmake --help,详细信息参考官方手册。

       命令行的基本格式是:cmake [选项] path-to-source [-G generator],其中选项如添加变量-D或-U,或以向导模式-i运行。

       继续深入CMake,CMakeLists.txt文件是项目构建的核心,它包含一系列命令来定义构建规则。例如,cmake_minimum_required设置最小CMake版本,add_custom_command和add_custom_target用于自定义构建过程,add_executable和add_library用于创建可执行文件和库,set和find_package等命令则用于配置变量和寻找依赖。

       实际编写CMakeLists.txt时,可以采用自动化查找源文件的方法,如aux_source_directory和file,以减少耦合。以cJSON库为例,演示了如何构建静态库、链接到可执行文件,以及如何处理库的可选性。

       通过这些基础操作,你将能够更有效地使用CMake。记住,实践是最好的老师,建议在遇到不明白的地方查阅文档深入学习。感谢你的阅读,如果你觉得文章有价值,不妨点赞或关注我们!