欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 如何構造json數據類型

錢瀠龍2年前9瀏覽0評論

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,常用于前后端數據交互。在C語言中,我們可以使用一些第三方庫來構造JSON數據類型,比如 cJSON 和 jsmn 等。

在使用 cJSON 前,我們需要先下載庫文件,并在代碼中引入頭文件。

#include "cJSON.h"

接下來,我們需要創建一個 cJSON 對象,并向其中添加數據。

cJSON *root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "name", "張三");
cJSON_AddStringToObject(root, "gender", "male");
cJSON_AddNumberToObject(root, "age", 18);

上面的代碼創建了一個名為 root 的 cJSON 對象,并向其中添加了三個鍵值對。我們可以使用不同的 cJSON_AddXXXToObject 函數向 cJSON 對象中添加不同類型的數據。

在添加完數據后,我們可以將 cJSON 對象轉換為 JSON 字符串,以便于傳輸或保存數據。

char *json_str = cJSON_Print(root);

上面的代碼將 root 對象轉換為 JSON 字符串并存儲在 json_str 變量中。需要注意的是,我們需要在使用完 cJSON 對象后手動釋放其占用的內存。

cJSON_Delete(root);

使用 jsmn 構造 JSON 數據類型的方式稍有不同。我們需要先定義一個 jsmntok_t 數組,用于存儲 JSON 字符串中各個節點的信息,然后使用 jsmn_parse 函數解析 JSON 字符串。

char *json_str = "{\"name\": \"張三\", \"gender\": \"male\", \"age\": 18}";
jsmntok_t tokens[128];
jsmn_parser parser;
jsmn_init(&parser); // 初始化解析器
int ret = jsmn_parse(&parser, json_str, strlen(json_str), tokens, 128);

上面的代碼從字符串中創建了一個 JSON 對象,并使用 jsmn_parse 函數解析 JSON 字符串,將各個節點的信息存儲在 tokens 數組中。

在解析完成后,我們可以使用 tokens 數組中的信息構造出 JSON 對象。

cJSON *root = cJSON_CreateObject();
for (int i = 0; i< ret; i++) {
if (tokens[i].type == JSMN_STRING) {
cJSON_AddStringToObject(root, tokens[i].string, tokens[i+1].string);
i++;
}
else if (tokens[i].type == JSMN_PRIMITIVE) {
cJSON_AddNumberToObject(root, tokens[i].string, atoi(json_str + tokens[i].start));
}
}

上面的代碼遍歷 tokens 數組,如果節點類型為 JSMN_STRING,則將該節點的鍵值對添加到 cJSON 對象中;如果節點類型為 JSMN_PRIMITIVE,則將該節點的數值添加到 cJSON 對象中。

和 cJSON 一樣,使用完 jsmn 后也需要手動釋放其占用的內存。

jsmn_free(tokens);