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

c解析json格式數據格式

林國瑞1年前8瀏覽0評論

JSON(JavaScript Object Notation)是目前非常流行的一種數據格式。在C語言中,如果需要解析JSON格式的數據,可以使用第三方庫,例如Jansson。

#include <jansson.h>
int main() {
char *json_str = "{\"name\":\"Jack\",\"age\":20,\"scores\":[87,90,95]}"; // JSON數據字符串
json_error_t error; // 解析錯誤信息
json_t *root = json_loads(json_str, 0, &error); // 解析JSON數據
if (!root) { // 解析錯誤時輸出錯誤信息
fprintf(stderr, "error: on line %d: %s \n", error.line, error.text);
return 1;
}
const char *name;
json_integer_t age;
json_t *scores;
// 解析JSON數據中的各個字段
json_unpack(root, "{s:s,s:i,s:o}", "name", &name, "age", &age, "scores", &scores);
printf("name: %s \n", name);
printf("age: %ld \n", (long)age);
if (json_array_size(scores) > 0) { // 解析scores數組
printf("scores: ");
for (size_t i = 0; i < json_array_size(scores); i++) {
printf("%ld ", (long)json_integer_value(json_array_get(scores, i)));
}
printf("\n");
}
json_decref(root); // 釋放內存
return 0;
}

以上代碼中,我們首先定義了一個JSON數據字符串,然后調用json_loads()函數解析JSON數據。如果解析成功,返回一個json_t對象,我們可以通過它訪問JSON數據中的各個字段。如果解析失敗,函數返回NULL,同時將錯誤信息存儲在json_error_t結構體中。

在本例中,我們訪問了JSON數據中的name、age和scores字段。其中,name和scores字段的值是字符串和整型數組,我們可以通過json_unpack()函數將它們解包到對應的變量中。解包時需要指定格式字符串,例如{s:s}表示解析一個字符串類型的字段。我們還演示了如何訪問scores數組。

最后,我們調用json_decref()函數釋放內存。