在c語言中,經(jīng)常需要將數(shù)據(jù)序列化為json格式,或者將json格式的數(shù)據(jù)反序列化為c語言中的數(shù)據(jù)結構。下面給出一些c語言中常用的json序列化和反序列化的方法:
#include <stdio.h> #include <jansson.h> int main() { // 將一個json字符串解析為json對象 const char *json_str = "{\"name\": \"Tom\", \"age\": 18}"; json_t *root; json_error_t error; root = json_loads(json_str, 0, &error); // 獲取json對象中的值 json_t *name = json_object_get(root, "name"); json_t *age = json_object_get(root, "age"); const char *name_str = json_string_value(name); int age_int = json_integer_value(age); printf("name: %s, age: %d\n", name_str, age_int); // 將c中的對象序列化為json字符串 json_t *person = json_object(); json_object_set_new(person, "name", json_string("Tom")); json_object_set_new(person, "age", json_integer(18)); char *person_str = json_dumps(person, JSON_COMPACT); printf("%s\n", person_str); return 0; }
在代碼中,首先使用了`json_loads`函數(shù)將一個json字符串解析為json對象,然后使用`json_object_get`函數(shù)獲取json對象中的值,并使用`json_string_value`和`json_integer_value`函數(shù)將其轉(zhuǎn)換為對應的c類型的值。
然后使用了`json_object`和`json_object_set_new`函數(shù)創(chuàng)建了一個json對象,并使用`json_dumps`函數(shù)將其序列化為一個json字符串。
值得注意的是,上述代碼使用了jansson庫,這是一個用于解析和生成json數(shù)據(jù)的c庫,可以在其官網(wǎng)https://digip.org/jansson/上下載和學習。