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

c json 轉對象數組

錢斌斌2年前7瀏覽0評論

c json轉對象數組是一個常見的操作。在C語言中,可以使用第三方庫來實現這個功能。其中一個常用的庫就是jansson。

使用jansson庫中的函數`json_loads()`可以實現將json字符串轉換成相應的jansson對象,然后使用`json_array_size()`函數獲取數組長度,再使用`json_array_get()`函數獲取數組元素,最后使用`json_object_get()`獲取對象屬性。

/* json字符串 */
const char *json_str = "["
"  {"
"    \"name\": \"John\","
"    \"age\": 30,"
"    \"city\": \"New York\""
"  },"
"  {"
"    \"name\": \"Mary\","
"    \"age\": 25,"
"    \"city\": \"Los Angeles\""
"  }"
"]";
json_error_t error; /* 錯誤信息 */
/* 將json字符串轉換成jansson對象 */
json_t *root = json_loads(json_str, 0, &error);
/* 判斷對象是否是jansson數組 */
if (!json_is_array(root)) {
printf("Error: json is not an array\n");
return;
}
/* 獲取數組長度 */
size_t array_size = json_array_size(root);
/* 遍歷數組 */
for (int i = 0; i< array_size; ++i) {
/* 獲取數組元素 */
json_t *element = json_array_get(root, i);
/* 判斷元素是否是jansson對象 */
if (!json_is_object(element)) {
printf("Error: element %d is not an object\n", i);
continue;
}
/* 獲取對象屬性 */
json_t *name = json_object_get(element, "name");
json_t *age = json_object_get(element, "age");
json_t *city = json_object_get(element, "city");
/* 打印對象屬性值 */
if (json_is_string(name)) {
printf("name: %s\n", json_string_value(name));
}
if (json_is_integer(age)) {
printf("age: %ld\n", json_integer_value(age));
}
if (json_is_string(city)) {
printf("city: %s\n", json_string_value(city));
}
}
/* 釋放jansson對象 */
json_decref(root);

使用jansson庫可以方便地實現C json轉對象數組的功能。需要注意的是,使用jansson庫的時候需要特別注意內存管理,不使用的jansson對象一定要及時釋放。