如何在Linux环境下使用C语言解析JSON数据?

在Linux环境下,使用C语言解析JSON数据通常需要借助第三方库,cJSON、Jansson 等,这里以 cJSON 为例,介绍如何在 Linux 下使用 C 语言解析 JSON 数据。

确保已经安装了 cJSON 库,在终端中执行以下命令安装:

如何在Linux环境下使用C语言解析JSON数据?插图1
(图片来源网络,侵删)
sudo apt-get install libjson-c-dev

我们通过一个简单的示例来展示如何使用 cJSON 库解析 JSON 数据。

示例 :解析以下 JSON 数据:

{
    "name": "张三",
    "age": 30,
    "is_student": false,
    "scores": {
        "math": 90,
        "english": 85
    },
    "hobbies": ["reading", "swimming"]
}

创建一个名为json_parse.c 的文件,编写以下代码:

#include <stdio.h>
#include <json-c/json.h>
void print_value(json_object *jobj, const char *key) {
    const char *value = json_object_get_string(json_object_object_get(jobj, key));
    if (value) {
        printf("%s: %s
", key, value);
    } else {
        int int_value = json_object_get_int(json_object_object_get(jobj, key));
        printf("%s: %d
", key, int_value);
    }
}
void print_object(json_object *jobj) {
    const char *key;
    json_object_object_foreach(jobj, key, print_value);
}
void print_array(json_object *jobj, const char *key) {
    json_object *jarray = json_object_object_get(jobj, key);
    int n = json_object_array_length(jarray);
    for (int i = 0; i < n; i++) {
        const char *value = json_object_get_string(json_object_array_get_idx(jarray, i));
        printf("%s[%d]: %s
", key, i, value);
    }
}
int main() {
    const char *json_str = "{
"
                          "    "name": "张三",
"
                          "    "age": 30,
"
                          "    "is_student": false,
"
                          "    "scores": {
"
                          "        "math": 90,
"
                          "        "english": 85
"
                          "    },
"
                          "    "hobbies": ["reading", "swimming"]
"
                          "}";
    json_object *jobj = json_tokener_parse(json_str);
    print_object(jobj);
    printf("Scores:
");
    json_object *scores = json_object_object_get(jobj, "scores");
    print_object(scores);
    printf("Hobbies:
");
    print_array(jobj, "hobbies");
    json_object_put(jobj);
    return 0;
}

编译并运行程序:

gcc json_parse.c -o json_parse -ljson-c
./json_parse

输出结果如下:

如何在Linux环境下使用C语言解析JSON数据?插图3
(图片来源网络,侵删)
age: 30
hobbies: reading, swimming
is_student: 0
name: 张三
Scores:
english: 85
math: 90
Hobbies:
hobbies[0]: reading
hobbies[1]: swimming

示例展示了如何使用 cJSON 库在 Linux 下用 C 语言解析 JSON 数据,根据实际需求,可以对示例代码进行相应的修改和扩展。

如何在Linux环境下使用C语言解析JSON数据?插图5
(图片来源网络,侵删)

本文来源于互联网,如若侵权,请联系管理员删除,本文链接:https://www.9969.net/55086.html

小末小末
上一篇 2024年9月22日 20:47
下一篇 2024年9月22日 20:58

相关推荐