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

c json字符串轉換為數組

江奕云1年前8瀏覽0評論

JSON是一種常見的數據格式,而在C語言中,我們通常需要將JSON字符串轉換為數組來處理數據。這里介紹一些實現方法。

首先,我們需要使用C語言中的json-c庫。這個庫提供了一些API可以幫助我們將JSON字符串解析成C語言中的數組。

#include <stdio.h>
#include <json-c/json.h>
int main() {
const char *json_str = "{ \"name\": \"張三\", \"age\": 18, \"scores\": [85, 90, 95] }";
struct json_object *json_obj = json_tokener_parse(json_str);
if (json_object_is_type(json_obj, json_type_object)) {
struct json_object *scores_array_obj;
if (json_object_object_get_ex(json_obj, "scores", &scores_array_obj)) {
if (json_object_is_type(scores_array_obj, json_type_array)) {
int array_len = json_object_array_length(scores_array_obj);
printf("scores array length: %d\n", array_len);
int scores[array_len];
for (int i = 0; i< array_len; i++) {
scores[i] = json_object_get_int(json_object_array_get_idx(scores_array_obj, i));
printf("scores[%d]: %d\n", i, scores[i]);
}
}
}
}
json_object_put(json_obj);
return 0;
}

這里,我們首先定義了一個JSON字符串,然后使用json_tokener_parse()函數將其轉換為一個json_object對象。接著,我們判斷這個對象是否為JSON對象,如果是,我們就從中取出scores數組。如果scores是一個JSON數組,我們就獲取它的長度,然后聲明一個同樣長度的整型數組scores。接下來使用json_object_array_get_idx()和json_object_get_int()函數獲取scores中的元素并存入scores數組中。

最后,我們需要使用json_object_put()函數釋放json_object對象占用的內存,避免造成內存泄漏。