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

STM32利用CJSON库生成和解析JSON格式数据

一 概念

  stm32使用cjson的时候,需要下载cjson的库函数,这个在github上有的,直接搜索cjson下载即可。下面是一个实例解析。

二 实例解析

1.读取json的数据内容,注意这个字符串的写法,在嵌入式c中,要加\的

 const char *str = "{\"action\":\"writePara\",\"value\":30,\"writeId\":\"40001\"}";

void cjson_read(void)
{

    cJSON *root; 
    cJSON *jsonAction;
    cJSON *jsonRWAddr;
    int modbusReadWriteAddr;


    root=cJSON_Parse((const char *)str);
    jsonAction = cJSON_GetObjectItem(root,"action"); 
    if(strcmp(jsonAction->valuestring,"writePara")==NULL)     
    {
        jsonRWAddr = cJSON_GetObjectItem(root,"writeId");  //获取读的ID
        modbusReadWriteAddr = atoi(jsonRWAddr->valuestring); //convert addr to int    
        mprintf("modbus addr is:%d\n\r",modbusReadWriteAddr);       
    }
    cJSON_Delete(root);
    cJSON_Delete(jsonAction);
    cJSON_Delete(jsonRWAddr);


}

2.json的数据生成格式如下:


void cjson_generate_string(void)
{
        char *jsonValue;
        cJSON *jsonCreat;
        cJSON *jsonCreatValue;

        jsonCreat = cJSON_CreateObject();//创建一个json对象
        jsonCreatValue = cJSON_CreateObject();//创建一个json对象

        cJSON_AddItemToObject(jsonCreat, "action", cJSON_CreateString("readPara"));
        cJSON_AddItemToObject(jsonCreatValue, "id", cJSON_CreateString("1"));
        cJSON_AddItemToObject(jsonCreat, "value", jsonCreatValue);        

        jsonValue=cJSON_Print(jsonCreat);
        cJSON_Delete(jsonCreat);
        cJSON_Delete(jsonCreatValue);
        mprintf("jsonValue len is:%d\n\r",strlen(jsonValue));
        mprintf("jsonValueis:%s\n\r",jsonValue);

}

三 总结

  1.解析生成字符串需要的堆栈比较大,需要把STM32的堆栈搞大一点.

  2.json的注意要用完及时删除。

相关文章:

  • 【论文笔记】RAQ-VAE: Rate-Adaptive Vector-Quantized Variational Autoencoder
  • 内容中台的AI应用核心是什么?
  • 第三课:DeepSeek的高级应用探索
  • java输出语句
  • 定时任务引起的死锁
  • 如何创建并保存HTML文件?零基础入门教程
  • 【NLP 35、序列标注任务】
  • MATLAB 控制系统设计与仿真 - 28
  • React(三):脚手架解析、组件分类、生命周期、组件通信
  • Rust + WebAssembly 实现康威生命游戏并进行单元测试
  • 从中序与后序遍历序列构造二叉树(Java)
  • Rockchip --- 图像时延优化
  • pandas中excel自定义单元格颜色
  • 3D视觉相机引导机器人的原理
  • Arduino入门常用指令详解及语法指南
  • DeepSeek在数据爬取领域的革新实践:架构解析与实战指南
  • 案例驱动的 IT 团队管理:创新与突破之路:第三章 项目攻坚:从流程优化到敏捷破局-3.2.2 Scrum vs Kanban 的场景化选择
  • DeepSeek:AI 搜索引擎的革新者?
  • Chat2DB:自然语言生成 SQL 的时代来临,数据库管理更简单
  • FPGA中级项目4——DDS实现
  • 习近平在河南洛阳市考察调研
  • 俄方确认普京与特朗普将于今晚通话
  • 三星“七天机”质保期内屏幕漏液被拒保,澎湃介入后已解决
  • 国家统计局:中美大幅降低关税有利于双方贸易增长,也有利于世界经济复苏
  • 内蒙古赤峰市城建集团董事长孙广通拟任旗县区党委书记
  • 上海明天短暂恢复晴热最高32℃,一大波雨水在候场