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

c json解析實例

傅智翔2年前9瀏覽0評論

C JSON解析實例

// 引入相關頭文件
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <jansson.h>
int main(int argc, char *argv[]) {
// 打開JSON文件
FILE *fp = fopen("example.json", "r");
if (!fp) {
printf("Failed to open file example.json\n");
return 1;
}
// 讀取數據
char buffer[1024];
size_t len;
json_t *root;
json_error_t error;
while ((len = fread(buffer, 1, sizeof(buffer), fp)) >0) {
root = json_loads(buffer, 0, &error);
if (!root) {
printf("Error on line %d: %s\n", error.line, error.text);
return 1;
}
}
// 解析數據
const char *name;
json_t *value;
// 解析對象
json_object_foreach(root, name, value) {
printf("Object: %s\n", name);
// 解析數組
if (json_is_array(value)) {
for (int i = 0; i< json_array_size(value); i++) {
json_t *array_item = json_array_get(value, i);
printf("- Array item: %s\n", json_string_value(array_item));
}
}
// 解析字符串
if (json_is_string(value)) {
printf("- String value: %s\n", json_string_value(value));
}
// 解析整型
if (json_is_integer(value)) {
printf("- Integer value: %lld\n", json_integer_value(value));
}
// 解析實型
if (json_is_real(value)) {
printf("- Real value: %f\n", json_real_value(value));
}
}
// 釋放資源
fclose(fp);
json_decref(root);
return 0;
}

本例子使用C語言解析JSON格式數據,使用了json-c和jansson兩個庫。

通過調用json_loads函數可以將JSON數據解析成一個json_t對象,然后使用json_object_foreach函數解析各個字段的值,使用json_is_xxx判斷值類型,使用json_xxx_value函數獲取值。