当前位置: 首页 > news >正文

嵌入式硬件篇---JSON通信以及解析


文章目录

  • 前言
  • 一、JSON特点
    • 语法简单
    • 数据格式灵活
    • 轻量化
    • 跨语言使用
  • 二、JSON数据结构
    • 对象
    • 数组
  • 三、JSON在单片机之间通信的应用
    • 数据封装与传输
  • 四、JSON示例代码
  • 五、JSON在上位机与单片机之间通信的应用
    • 数据交互
  • 六、JSON示例代码
  • 七、JSON解析与生成
    • 解析
    • 生成
  • 八、Python中的数据解析
    • 1.字符串解析
      • 1.1整数
      • 1.2浮点数
      • 1.3布尔数
      • 1.4JSON格式字符串
      • 1.5CSV格式字符串
    • 2.字节解析
      • 2.1解析为整数
      • 2.2解析为字符串
    • 3.列表解析
      • 3.1解析嵌套列表
    • 4.字典解析
      • 4.1解析嵌套字典
    • 5.XML 解析
    • 6.自定义数据类型解析


前言

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,在单片机之间、上下位机之间的通信中被广泛应用。


一、JSON特点

语法简单

语法简洁:JSON 的语法基于 JavaScript 的对象和数组字面量表示法,非常直观和简洁。它使用键值对来表示数据,易于阅读和编写。

数据格式灵活

数据格式灵活:支持多种数据类型,包括字符串、数字、布尔值、数组、对象等,可以方便地表示复杂的数据结构。

轻量化

轻量级:相比其他一些数据交换格式(如 XML),JSON 的数据量较小,在网络传输和存储方面具有优势,能够有效减少通信带宽和存储空间的占用。

跨语言使用

跨语言支持:几乎所有的编程语言都提供了对 JSON 的解析和生成支持,这使得它在不同类型的单片机和上位机(如 PC、手机等)之间进行数据交换时非常方便,无需考虑语言差异。

二、JSON数据结构

对象

对象:由花括号 {} 包围,包含一系列键值对。键是字符串,值可以是任意数据类型。例如:{“name”: “John”, “age”: 30, “isStudent”: false}。

数组

数组:由方括号 [] 包围,包含一系列元素,元素可以是任意数据类型。例如:[1, 2, 3, “four”, true]。

三、JSON在单片机之间通信的应用

数据封装与传输

数据封装与传输:单片机通常资源有限,JSON 的轻量级特性使其成为一种理想的数据格式。当多个单片机之间需要进行数据交互时,例如传感器节点与控制节点之间的通信,传感器节点可以将采集到的数据(如温度、湿度、光照强度等)封装成 JSON 格式的字符串,然后通过串口、SPI 等通信接口发送给控制节点。控制节点接收到数据后,再解析 JSON 字符串,获取其中的具体数据值,进行相应的处理。

四、JSON示例代码

以 C 语言为例,在单片机中使用 cJSON 库来处理 JSON 数据。假设要发送一个包含温度和湿度数据的 JSON 消息,代码如下:

#include "cJSON.h"

// 模拟采集到的温度和湿度数据
float temperature = 25.5;
float humidity = 60.0;

int main() {
   
    // 创建一个JSON对象
    cJSON *root = cJSON_CreateObject();

    // 向JSON对象中添加温度和湿度数据
    cJSON_AddNumberToObject(root, "temperature", temperature);
    cJSON_AddNumberToObject(root, "humidity", humidity);

    // 将JSON对象转换为字符串
    char *json_string = cJSON_Print(root);

    // 这里可以通过串口等方式将json_string发送出去

    // 释放内存
    cJSON_Delete(root);
    free(json_string);

    return 0;
}

五、JSON在上位机与单片机之间通信的应用

数据交互

数据交互:上位机(如 PC 端的应用程序或手机 APP)与单片机之间经常需要进行数据交互。例如,上位机向单片机发送控制指令,或者从单片机获取传感器数据、设备状态等信息。JSON 格式可以方便地对这些数据进行封装和传输。上位机将指令或请求数据封装成 JSON 格式发送给单片机,单片机解析 JSON 数据并执行相应操作,然后将结果以 JSON 格式返回给上位机。上位机再解析返回的 JSON 数据,进行显示或进一步处理。

六、JSON示例代码

示例代码:在 Python 中使用 json 模块处理 JSON 数据,与单片机进行通信(假设通过串口与单片机通

相关文章:

  • 给Android Studio配置本地gradle和maven镜像地址,加快访问速度
  • Vue3 视频播放与截图功能实现
  • 第六章、Isaacsim中的资产:usda文件详解(1)
  • 基姆拉尔森计算公式
  • 车辆投保日期查询API:快速获取想要的车辆保险日期
  • [王阳明代数讲义]琴语言类型系统工程特性
  • Tracing the thoughts of a large language model 简单理解
  • AI比人脑更强,因为被植入思维模型【41】反作用力思维模型
  • Python 爬虫突破反爬虫机制实战
  • 文献分享: DESSERT基于LSH的多向量检索(Part1——原理与实现)
  • C++中std::priority_queue的使用说明
  • #MySQL 语句大全(完整实用教程)
  • 生成对抗网络(GAN)详解
  • Java代理(四)动态代理之CGLIB
  • 单网卡上绑定多个虚拟IP(AI回答)
  • linux部署成功,但外网无法访问
  • 数据结构与算法:子数组最大累加和问题及扩展
  • 百度查询的ip与命令行输入 ipconfig 显示的IP地址有以下主要区别:
  • 管家婆财贸ERP BB102.采购销售订金管理
  • 快速生成mysql测试数据10w条