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

c 直接操作json數據

謝彥文2年前8瀏覽0評論

JSON是一種輕量級的數據交換格式,常用于前后端的數據傳輸和存儲。C語言中沒有內置的JSON數據類型,但可以使用第三方庫來解析和操作JSON數據。

在C語言中,可以使用preprocessor定義一個JSON數據結構:

typedef struct {
enum { JSON_STRING, JSON_NUMBER, JSON_OBJECT } type;
union {
char *str;
double num;
struct {
char **keys;
struct json_t **values;
int num_of_values;
} obj;
} data;
} json_t;

該數據結構包含三種類型的數據:字符串、數字、和JSON對象。JSON對象具有鍵-值對的結構。定義這個數據結構后,就可以使用C語言中的指針和內存操作函數來構建和操作JSON數據。

以下是一個簡單的例子,在C語言中直接將JSON字符串轉換為JSON對象,并獲取其中的鍵值:

#include "json.h"
int main() {
char *json_str = "{ \"name\": \"John\", \"age\": 30 }";
json_t *obj = json_parse(json_str);
char *name = json_get_string(obj, "name");
int age = json_get_num(obj, "age");
printf("Name: %s, Age: %d\n", name, age);
json_free(obj);
return 0;
}

在這個例子中,字符串"{ \"name\": \"John\", \"age\": 30 }"被解析為JSON對象,并且可以通過json_get_string和json_get_num函數來獲取其中的值。

再看一個例子,在C語言中直接構建一個復雜的JSON對象:

#include "json.h"
int main() {
json_t *obj = json_new_object();
json_add_string(obj, "name", "John");
json_add_num(obj, "age", 30);
json_t *address = json_new_object();
json_add_string(address, "street", "123 Main St.");
json_add_string(address, "city", "Anytown");
json_add_string(address, "state", "CA");
json_add_object(obj, "address", address);
json_print(obj);
json_free(obj);
return 0;
}

在這個例子中,使用json_new_object函數創建一個空的JSON對象,并通過json_add_*函數向其中添加鍵值對。另外,通過json_add_object函數可以向JSON對象中添加另一個JSON對象。最后,使用json_print函數將JSON對象轉換為字符串并打印出來。

總之,雖然C語言沒有內置的JSON數據類型,但通過使用第三方庫和一些內存操作技巧,我們可以在C程序中直接操作JSON數據。