json 与 cJSON

  • 一、json是什么?
    • 1.简介
    • 2.json的语法规则
  • 二、cJSON
    • 1.简介
    • 2.下载
    • 3.cJSON
    • 4.实例

一、json是什么?

1.简介

1.json指的是JavaScript对象表示法(JavaScript Object Notation)
2.josn是轻量级的文本数据交换格式
3.json独立于语言
4.json具有自我描述性,更易理解
5.json 使用 JavaScript 语法来描述数据对象,但是 json 仍然独立于语言和平台。json 解析器和 json 库支持许多不同的编程语言。

2.json的语法规则

json的语法规则:https://www.runoob.com/json/json-syntax.html

二、cJSON

1.简介

cJSON是一个超轻巧,携带方便,单文件,简单的可以作为ANSI-C标准的JSON解析器。

我们在使用JSON格式时,如果只是处理简单的协议,可以依据JSON格式,通过对字符串的操作来进行解析与创建。然而随着协议逐渐复杂起来,经常会遇到一些未考虑周全的地方,需要进一步的完善解析方法,此时,使用比较完善的JSON解析库的需求就提出来了。

基于方便引用的考虑,我们希望这个JSON解析库是用C语言实现的。同时,为了避免太过复杂的C源码包含关系,希望最好是一个C文件来实现。通过在网络上的查找,发现cJSON是比较符合要求的。cJSON只有一个C文件,一个头文件,包含到项目源码中非常方便,而且其实现效率也是非常高的。

2.下载

git clone https://github.com/DaveGamble/cJSON.git
cd cJSON


把这两个放入你的项目中即可。
编译时加上选项-lm因为cJSON源码中用到了math库。

3.cJSON

在这里只讲一些项目中用到的一些API。
详细请参考:https://blog.csdn.net/makunIT/article/details/107199000
如果博客看不懂或者有疑问,请打开源码:vim cJSON.hvim cJSON.c仔细阅读,此源码并不复杂。

cJSON *cJSON_CreateObject()//创建一个json对象,返回一个cJSON结构体类型的指针。
void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)//向json对象中添加一对元素,object为json对象,string为加入其中对象的name,item为加其中对象的value。
char *cJSON_Print(cJSON *item)//将一个cJSON结构体代表的json对象转换为一个json格式的字符串。
void cJSON_Delete(cJSON *c)//释放一个cJSON对象占用的内存空间。

说明:
添加操作的底层都是这个函数,只不过起了一个新的名字,所以我们只学习这一个函数:**void cJSON_AddItemToObject(cJSON *object, const char *string, cJSON *item)**即可。

4.实例

json 与 cJSON相关推荐

  1. STM32 解析 JSON 之 cJSON

    什么是 JSON ? 可以参考此网站链接:JSONhttp://www.json.org/json-en.html 此网站首页最下方是各种语言的实现库: cJSON 的 GitHub 地址:DaveG ...

  2. Json与CJson详解

            JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计.轻量级的数据交换语言,该语言以易于让人阅读的文字 ...

  3. JSON和cJSON

    cJson使用 目录 一.什么是JSON 1.JSON 2.cJSON 二.例子 1.最简单的cJSON字符串 2.使用cJSON解析数组 三.完整代码 一.什么是JSON 最近在做项目的时候,经常用 ...

  4. JSON与cJSON

    该文主要记录是JSON的基本概念以及对应的cJSON API. 一.什么是JSON ? 详细的介绍见 https://www.json.org/ ,可以看到, JSON 可分为两类,一类是object ...

  5. c语言解析json报文源码,GitHub - faycheng/cJSON: cJson源码和源码分析

    cJSON官方文档翻译 项目预期目标 文档翻译 函数列表 项目架构 源码注释 解析流程 快速使用 ###版权说明 Copyright (c) 2009 Dave Gamble Permission i ...

  6. JSON数据格式解析库(cJSON、Jansson)的使用在STM32上移植和使用

    json | json-c使用入门 这篇讲的也不错,抽空看下(网络传输json数据) https://www.bilibili.com/video/av669454528?p=3&spm_id ...

  7. json格式与cJSON函数库

    json的格式 键/值对 key:value,用半角冒号分割 文档对象 JSON对象写在花括号中,可以包含多个键/值对. 数组 JSON 数组在方括号中书写: 数组成员可以是对象,值,也可以是数组(只 ...

  8. Lua利用cjson读写json

    前言 本文结合本人的实际使用经验和代码示例,介绍如何在Lua中对json进行encode和decode.我这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能比纯Lua库要高 ...

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

    为什么选择cJSON来解析JSON字符串?因为简洁又简单,而且效率又快,cJSON工程文件也非常简单,仅一个.c文件和一个.h文件! 如果要自己写的话就是重造轮子了,况且效率上也不一定会比cJSON更 ...

最新文章

  1. html 流动效果,html5 canvas流动的海浪特效
  2. sparkstreaming监听hdfs目录如何终止_Spark笔试题:Spark Streaming 反压机制
  3. 渗透测试网络环境搭建
  4. BOOST_VMD_ASSERT_IS_TUPLE宏相关的测试程序
  5. 某计算机系统20位地址线 8位数据线,同济大学2009-2010(1)微机原理期终考试试题(B卷)...
  6. kafka 主动消费_Kafka消费组(consumer group)
  7. Oracle报错:IO Error: Invalid number format for port number
  8. Etcd服务发现原理
  9. python 之发送邮件服务[原著] 海瑞博客
  10. 简单动态网站的搭建流程
  11. StartDT奇点云邀您参加2022云栖大会,11月3-5日杭州见
  12. 报错:跨域问题解决 No ‘Access-Control-Allow-Origin‘ header is present on the requested resource.
  13. 利用Python实现图片信息隐藏
  14. 在农业道路上越扎越深,拼多多看到了什么?
  15. debian是什么?
  16. python的pulp包_使用Python/PuLp解决线性规划问题
  17. Monte Carlo方法的基本思路
  18. 美国AMC数学竞赛的含金量如何?
  19. Redis键-值数据库 nosql 数据建模(4)------ 如何存储主从表数据 一对超级多关系
  20. ubuntu中snap包的安装、更新删除与简单使用

热门文章

  1. VBA小模板:一个普通随机抽奖,需要模拟多轮用VBA怎么做?
  2. mosquitto 在 Windows 上的安装
  3. 路由器WIFI信号有时找不到,挨在边上也找不到的解决办法 - 找不到WIFI信号 - 家里WIFI找不到
  4. Linux下的打包和解压缩命令
  5. Self -Supervised Learning
  6. C++最长公共子序列问题(LCS)(递归+迭代)
  7. 如何使用memset函数
  8. python日本 老龄化分析_中国离老龄化社会还有多远?数据图表源代码一览
  9. qt连接mysql数据库 mac_Mac系统下Qt 4.8编译连接数据库(Oracle,MySql)
  10. BAT批处理基本命令