我正在使用json-c庫。我在嘗試解析C中的json文件時遇到了兩個問題。使用json-c解析json文件
如果我嘗試解析文件,那麼我會在json_object_object_foreach()
處發生分段錯誤。
但是,如果我刪除了json文件開始和結束的方括號,它只能解析第一個對象。我想解析整個json文件。
這裏是我的代碼:
int ParseJson(const char *file)
{
char *json;
int fd;
struct json_object *obj;
struct stat st;
fd = open(file, O_RDONLY);
json = mmap(NULL, st.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
close(fd);
obj = json_tokener_parse(json);
json_object_object_foreach(obj, key, val) {
printf("key = %s value = %s\n",key, json_object_get_string(val));
}
return 0;
}
這裏是我的JSON文件:
[{
"test_1": "min",
"test_2": "max",
"test_3": "val",
"test_4": "res",
"test_5": "var",
"test_6": "hal"
}, {
"fetch_1": 300.00,
"fetch_2": 100.000,
"fetch_3": 0.000000,
"fetch_4": 0.000000,
"fetch_5": 20.00
}, {
"fetch_1": 250.00,
"fetch_2": 310.000,
"fetch_3": 3.000000,
"fetch_4": 7.000000,
"fetch_5": 18.00
}, {
"fetch_1": 450.00,
"fetch_2": 678.000,
"fetch_3": 3.000000,
"fetch_4": 3.000000,
"fetch_5": 89.00
}, {
"fetch_1": 300.00,
"fetch_2": 100.000,
"fetch_3": 7.000000,
"fetch_4": 67.000000,
"fetch_5": 50.00
}, {
"fetch_1": 900.00,
"fetch_2": 800.000,
"fetch_3": 6.000000,
"fetch_4": 5.000000,
"fetch_5": 30.00
}]
'json_type_array'是否支持'key'和'val'的'json_object_object_foreach'? ......我想不會。也許檢查'json_object_is_type'並考慮'json_object_array_length'和'json_object_get_array'函數。 [閱讀文檔](http://json-c.github.io/json-c/json-c-0.12.1/doc/html/index.html),我可能是錯的。 – Myst