json-c使用json格式解析字符串

json-c使用json格式解析字符串

json字符串,使用json格式做解析

#include <json-c/json.h>
#include <stdio.h>

int main(int argc, char * argv[]) {

    char json_str[2048] = "[{\"aaa\":\"aa\", \"iii\":111}, {\"aaa\":\"aaaa\", \"iii\":222}, {\"aaa\":\"aaaaaa\", \"iii\":333}]" ;
    struct json_object* json_obj = NULL ;
    struct json_object* json_one = NULL ;
    struct json_object* json_value = NULL ;

    const char * str_value = NULL ;
    int int_value = 0 ;

    // 字符串转 json 对象
    json_obj = json_tokener_parse(json_str) ;
    if (json_obj == NULL ) {
        printf("json_str is not json string, parse error") ;
        return -1 ; 
    }
    // 获取 数组长度
    int array_size = json_object_array_length(json_obj) ;
    // 遍历
    for( int i=0 ; i < array_size ; ++i ) {
        // 按照 索引 遍历
        json_one= json_object_array_get_idx(json_obj, i) ; 

        // 通过 key 获取 value 对象
        json_object_object_get_ex(json_one, "aaa", &json_value);
        // 转换成 字符串
        str_value = json_object_get_string(json_value);
        printf("key aaa value [%s]\n", str_value) ;

        // 通过 key 获取 value 对象
        json_object_object_get_ex(json_one, "iii", &json_value);
        // 转换成 字符串
        int_value = json_object_get_int(json_value);
        printf("key iii value [%d]\n", int_value) ;
    }
    // 空间释放
    json_object_put(json_obj);
    return 0 ; 
    
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注