硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4008|回复: 5
收起左侧

[有问必答] STM32中关于使用cjson的问题

[复制链接]

27

主题

94

回帖

175

积分

初级会员

积分
175
发表于 2020-12-7 15:22:54 | 显示全部楼层 |阅读模式
本帖最后由 Mark 于 2020-12-7 16:24 编辑

{
        "topic": "open_door",
        "addrlist": [1,2,3]         [size=1.1em]//0:表示开柜门;1~254:表示指定电池仓地址;需要开启多个时,将对应地址添加到数组中
}

怎么解析addrlist数组,得到1,2,3呢?

第一次使用cjson所有很多地方不是很清楚,请大佬指点!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106913
QQ
发表于 2020-12-8 00:42:39 | 显示全部楼层
我记得有个xxxgetarray函数
回复

使用道具 举报

27

主题

94

回帖

175

积分

初级会员

积分
175
 楼主| 发表于 2020-12-8 08:14:51 | 显示全部楼层
eric2013 发表于 2020-12-8 00:42
我记得有个xxxgetarray函数

多谢硬汉哥每次即时的回复。
回复

使用道具 举报

6

主题

639

回帖

657

积分

金牌会员

积分
657
QQ
发表于 2020-12-8 09:45:51 | 显示全部楼层
老铁的上一个cjson问题解决了?
回复

使用道具 举报

6

主题

639

回帖

657

积分

金牌会员

积分
657
QQ
发表于 2020-12-10 17:04:18 | 显示全部楼层
//cJSON解析 uint16_t i = 0, ipAddr[4] = {0}; bool json_parse_info2(const char * const context) {         cJSON *json_context = cJSON_Parse(context);                  if(json_context == NULL)         {                 cJSON_Delete(json_context);                 return false;         }         // 项目01         json_body = cJSON_GetObjectItemCaseSensitive(json_context, "topic");         if( !cJSON_IsString(json_body) )         {                 cJSON_Delete(json_context);                 return false;         }         // 项目02         json_list = cJSON_GetObjectItemCaseSensitive(json_context, "addrlist");         i = 0;         cJSON_ArrayForEach(json_body, json_list)         {                 if( cJSON_IsNumber(json_body) )                 {                         ipAddr[i++] = json_body->valueint;                 }                 else                 {                         cJSON_Delete(json_context);                         return false;                 }         }                  cJSON_Delete(json_context);         return true; }
回复

使用道具 举报

6

主题

639

回帖

657

积分

金牌会员

积分
657
QQ
发表于 2020-12-10 17:05:03 | 显示全部楼层
//cJSON解析
uint16_t i = 0, ipAddr[4] = {0};
bool json_parse_info2(const char * const context)
{
        cJSON *json_context = cJSON_Parse(context);
       
        if(json_context == NULL)
        {
                cJSON_Delete(json_context);
                return false;
        }
        // 项目01
        json_body = cJSON_GetObjectItemCaseSensitive(json_context, "topic");
        if( !cJSON_IsString(json_body) )
        {
                cJSON_Delete(json_context);
                return false;
        }
        // 项目02
        json_list = cJSON_GetObjectItemCaseSensitive(json_context, "addrlist");
        i = 0;
        cJSON_ArrayForEach(json_body, json_list)
        {
                if( cJSON_IsNumber(json_body) )
                {
                        ipAddr[i++] = json_body->valueint;
                }
                else
                {
                        cJSON_Delete(json_context);
                        return false;
                }
        }
       
        cJSON_Delete(json_context);
        return true;
}
只能帮你到这里了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-9 17:44 , Processed in 0.187765 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表