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

c 讀取json取數據

呂致盈1年前7瀏覽0評論

在C語言中,讀取JSON數據時最常用的方法就是使用第三方庫。這里我們介紹使用jansson庫進行JSON數據處理。

頭文件引用:
#include <jansson.h>
C語言版JSON API:
jansson庫提供的API十分簡潔,以json_t 和 json_error_t 為主要結構體,json_object() 和 json_array() 則為創建JSON對象和JSON數組提供了支持。下面是一些常用的函數。
//創建JSON對象
json_t *json_object(void);
//創建JSON數組
json_t *json_array(void);
//將JSON字符串解析成JSON對象
json_t *json_loads(const char *input, size_t flags, json_error_t *error);
//將JSON對象輸出成JSON字符串
char *json_dumps(const json_t *json, size_t flags);
//獲取JSON對象某個JSON數據的值
json_t *json_object_get(const json_t *json, const char *key);
//遍歷JSON對象中JSON數據的值
const char *key;
json_t *value;
json_object_foreach (json_t *object, key, value) {
// your code here
}
具體使用可以參考官方文檔:https://jansson.readthedocs.io/en/2.13/
下面我們以一個簡單的例子來演示如何讀取JSON數據中的某些值:
#include <stdio.h>
#include <jansson.h>
int main(void) {
//定義JSON對象和錯誤結構體
json_t *root;
json_error_t error;
//輸入JSON字符串
const char *json_str = "{\"name\":\"Michael\",\"age\":20,\"score\":70.5}";
//解析JSON字符串
root = json_loads(json_str, 0, &error);
//獲取JSON數據
const char *name;
int age;
float score;
json_t *name_obj, *age_obj, *score_obj;
name_obj = json_object_get(root, "name");
age_obj = json_object_get(root, "age");
score_obj = json_object_get(root, "score");
if (!name_obj || !age_obj || !score_obj) {
fprintf(stderr, "JSON 數據無效\n");
return 1;
}
name = json_string_value(name_obj);
age = json_integer_value(age_obj);
score = json_real_value(score_obj);
//輸出獲取到的值
printf("Name: %s\nAge: %d\nScore: %.1f\n", name, age, score);
//釋放JSON對象內存
json_decref(root);
return 0;
}
其中,json_string_value()、json_integer_value() 和 json_real_value() 函數分別用于將獲取到的值轉化為字符串、整型、浮點數類型。 通過jansson庫對JSON數據進行處理,C語言的JSON數據讀寫變得十分簡便,同時也給C語言在處理JSON數據時帶來了新的可能性和思路。