cjson使用_Keil环境下Jansson解析库的使用——基于STM32F103

本文介绍了在Keil环境下,如何使用Jansson库解析JSON,作为cJSON的替代方案。Jansson库无需动态内存分配,适合资源有限的嵌入式开发。文中通过三个示例展示了不同格式JSON的解析,包括纯键值对、键值为对象和键值为数组的情况,并提供了示例工程下载。
摘要由CSDN通过智能技术生成

ccb0e73bb9ebdca64559c657206d36aa.png

前言

之前我曾经写过几个JSON解析库的使用方法:

Qt平台下使用QJson解析和构建JSON字符串

使用cJSON库解析JSON

使用cJSON库构建JSON

对于嵌入式开发,比较常用的就是cJSON解析库了,但是使用这个库对内存开销比较大,需要大量使用malloc和free进行动态内存分配和释放。对于单片机这种资源短缺的芯片来说,简直是太吃力了。使用STM32等单片机,不能解析多层JSON时,还需要调大堆栈。

今天来了解一下一个和cJSON非常类似的解析库——Jansson的使用,支持解析和构建JSON字符串,不需要动态分配内存,使用方法和cJSON几乎一样。

本文以Keil环境下的Jansson为例,介绍多种不同格式的JSON字符串解析。

示例工程下载:whik1194-JanssonDemo.rar

Jansson的安装

Jansson的安装非常简单,到Keil官网下载一个Jansson的Pack包即可: Keil.Jansson.1.0.0.pack,点击直接下载。

安装完成之后,如果要在当前项目中添加Jansson解析库,在Keil中勾选上Jansson即可,选择完成之后,在当前工程下会出现两个文件:jansson_CM3LE.libjansson_config.c

30ae699c232ac7a95d38d858077952bf.png

在要使用的文件中包含头文件:#include <jansson.h>

为了方便调试,自定义实现了一个串口格式化输出函数:LOG1。

void LOG1(char *fmt,...)
{
    
    unsigned char UsartPrintfBuf[296];
    va_list ap;
    unsigned char *pStr = UsartPrintfBuf;

    va_start(ap, fmt);
    vsnprintf((char *)UsartPrintfBuf, sizeof(UsartPrintfBuf), fmt, ap);                         //格式化
    va_end(ap);

    while(*pStr != 0)
    {
    
        while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
        USART_SendData(USART1, *pStr++);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值