cJSON获取json数据的所有的key

小记

使用cJSON实现获取json数据中所有的key的值,然后对key值做相应的处理操作

笔记

首先先看了一下cJSON的结构体,双向链表结构。

// cJSON结构体:

typedef struct cJSON {

     struct cJSON *next,*prev;   // next/prev allow you to walk array/object chains. Alternatively, use GetArraySize/GetArrayItem/GetObjectItem

     struct cJSON *child;        // An array or object item will have a child pointer pointing to a chain of the items in the array/object.

     int type;                   // The type of the item, as above.

     char *valuestring;          // The item's string, if type==cJSON_String

     int valueint;               // The item's number, if type==cJSON_Number

     double valuedouble;         // The item's number, if type==cJSON_Number

     char *string;               // The item's name string, if this item is the child of, or is in the list of subitems of an object.

} cJSON;

包含了key以及指向下一个结点的指针
那么就直接遍历链表就好了

实现如下:

#include <stdio.h>
#include <string.h>
#include "cJSON.h"
#include "pub_function.h"
int main(){
    cJSON * test_json;
    char *content=read_json("./testjson.json");
    test_json=cJSON_Parse(content);
    cJSON * testitem_json=cJSON_GetObjectItem(test_json,"device_type");
    while (testitem_json->next!=NULL)
    {
        printf("%s\n",testitem_json->string);
        testitem_json=testitem_json->next;
    }
}

运行结果:
在这里插入图片描述
json文件:

{
	"device_type":	"WSD_General",
	"modal_type":	"WSD",
	"device_name":	"SNMP网络路由",
	"address":	"192.168.32.2",
	"get_community":	"public",
	"set_community":	"public"
}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值