什么是Json,javajson

什么是Json,javajson 前言JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON在互联网相关开发中用得很多,在我们嵌入式中用得也不少。最近在项目中就有用到,用

前言

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。JSON在互联网相关开发中用得很多,在我们嵌入式中用得也不少。最近在项目中就有用到,用起来很方便。

简单的JSON格式数据如:

{
  "name": "xxx",
  "num": xxx,
  "c_score": xxx
}

这里我们需要知道一个概念:键值对。比如:

"name": "xxx"

像这样子的就是一对键值对。

当我们作为发送方时,我们要把xxx这些有用的数据组合成JSON格式的数据发送给接收方;当我们作为接收方时,我们需要从这一堆JSON数据中解析出xxx这些有用的数据拿来使用。简单的JSON数据,我们使用C语言的一些字符串操作相关的库函数也是可以做到组包和解析的,但是一些稍微复杂一点的JSON,可能就没那么好操作了。

这时候我们可以借助一个第三方库——cJSON库,可以很方便来做数据组包及解析。

cJSON库仓库地址:

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

或者

https://gitee.com/mirrors/cJSON.git

下面我们通过实例来分享使用cJSON库来做数据组包及数据解析。

组包、解析示例

1、确定协议数据

在实际开发中,要把JSON数据作为通信的数据,自然要先确定通信双方要交互的数据有哪些,如有需要还需编写形成协议文档。协议文档包含要传输的数据,数据类型等信息。比如:

例说嵌入式实用知识之JSON数据

2、组JSON数据包示例

从控制台输入一些学生信息,组合成字符串格式的JSON数据包,然后再输出至控制台。

操作示例:

例说嵌入式实用知识之JSON数据

首先,我们先从仓库下载cJSON源码,文件夹内容如:

例说嵌入式实用知识之JSON数据

我们只需要把cJSON.c、cJSON.h两个文件复制到我们工程的根目录下就可以使用,如:

例说嵌入式实用知识之JSON数据

从cJSON.h可以看到其给我们提供了很多接口:

例说嵌入式实用知识之JSON数据

本例中我们重点如下几个接口即可:

cJSON_CreateObject:创建JSON对象,{}扩起来的
cJSON_CreateString:创建字符串
cJSON_CreateNumber:创建int类型数据
cJSON_AddItemToObject:添加到JSON对象中
cJSON_Print:呈现为标准的JSON格式
cJSON_PrintUnformatted:呈现为去掉空格的JSON格式
cJSON_Delete:JSON对象删除,做一些释放内存的工作

我们创建的的组包函数如下:

static char *StudentsData_Packet(pStudentDef _Stu)
{
char *res_string = NULL; // 返回值
cJSON *name = NULL; // 名字
cJSON *num = NULL; // 学号
cJSON *c_score = NULL; // C语言分数

/* 创建一个JSON对象,{}扩起来 */
cJSON *obj = cJSON_CreateObject();
if (obj == NULL)
{
goto end;
}

/* 创建 "name": "xxx" 键值对 */
name = cJSON_CreateString(_Stu-

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/50607.html

(0)

相关推荐

  • 小米宣布新一轮组织架构调整:潘九堂担任参谋长,李涛主持质量委员会工作

    品玩11月26日讯,据新浪科技,小米集团今日宣布新一轮的组织架构调整及干部任命,涉及集团管理层、手机部、中国区、互联网业务部几个部门,以持续提升组织管理能力,向三年时间全球第一的目标全面冲刺。

    科技 2021年11月26日
  • 使命召唤现代战争画质怎么调,使命召唤现代战争怎么提高帧数

    使命召唤帧数如何上升? 很多玩家不知道如何快速提高游戏的帧数,但实际上有很多提高帧数的方法。 让我们来看看如何提高cod19的帧数。 如果能帮到各位玩家的话就太好了。 : 使命召唤...

    教程 2022年10月30日
  • 烟台龙口网站优化选哪家比较好?

    关于烟台龙口网站优化选哪家比较好?的相关问题,今天柠檬ai小编就来给大家整理说明一下,希望对大家有帮助前阵子,我用了一个seo排名软件,效果还不错,叫WanDot SEO营销软件的...

    攻略 2021年4月25日
  • “占有欲强”英语怎么说?

    点击上方蓝字关注YYan英语 占有欲强 possessive (1) possessive [pzesv] “(对人)占有欲强的,自私的”,形容在亲情、爱情或友情上,一个人想要拥有...

    阅读 2022年1月11日
  • 边窗的意思,边窗是什么意思-组词(字义,诗词)

    词组边窗的意思,边窗是什么意思-组词(字义,诗词)基本解释详细字义 边窗拼音:biān chuāng注音:ㄅ一ㄢ ㄔㄨㄤ解释:1.门口或大窗两侧的狭小的窗户。2.关闭的马车或汽车的侧面窗口,以区别于门上的窗口。古

    阅读 2021年11月27日
  • 董一的意思(字义,诗词)

    词组董一的意思(字义,诗词)基本解释详细字义 董一拼音:dǒng yī注音:ㄉㄨㄥˇ 一解释:统一主持;一统。古代诗词宋代.方岳.题董一之花木杪:「吾何曾识董一之,於此略已心相知。」清代.郑孝胥.丁叔雅示猿叟书册

    阅读 2021年11月4日