色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c11解析json

錢淋西2年前8瀏覽0評論

在C11中解析和操作JSON數據結構非常簡單。JSON是一種常用的數據格式,它可以儲存復雜的數據結構,包括數組和嵌套對象。在C11中解析JSON數據需要使用外部庫,比較流行的庫有jansson和json-c。

這里我們以json-c為例,假設我們有一個名為“config.json”的文件,其中包含了以下字符串:

{
"title": "My website",
"pages": ["home", "about", "blog"],
"author": {
"name": "John Doe",
"email": "johndoe@example.com"
}
}

我們可以使用以下代碼來解析該JSON文件:

#include <stdio.h>
#include <json-c/json.h>
int main() {
// 打開文件
FILE *fp;
fp = fopen("config.json", "rb");
if (fp == NULL) {
printf("無法打開文件");
return 0;
}
// 讀取文件
char buffer[1024];
fread(buffer, 1, 1024, fp);
fclose(fp);
// 解析JSON
struct json_object *root;
root = json_tokener_parse(buffer);
// 從JSON對象中獲取數據
struct json_object *title, *pages, *author;
json_object_object_get_ex(root, "title", &title);
json_object_object_get_ex(root, "pages", &pages);
json_object_object_get_ex(root, "author", &author);
// 打印數據
printf("標題:%s\n", json_object_get_string(title));
printf("頁面:%zu\n", json_object_array_length(pages));
printf("作者:%s\n", json_object_get_string(json_object_object_get(author, "name")));
// 釋放JSON對象
json_object_put(root);
return 0;
}

在代碼中,我們首先打開文件并讀取文件內容。然后使用json_tokener_parse函數將JSON字符串解析成一個json_object類型的根對象。接著我們可以使用json_object_object_get_ex函數從根對象中獲取需要的數據,并使用json_object_get_string和json_object_array_length兩個函數獲取字符串和數組長度。最后,我們使用json_object_put函數釋放對象并完成操作。

需要注意的是,使用JSON庫操作的內存需要手動釋放。因此,使用結束后一定要調用json_object_put函數進行釋放。