在C編程中,序列化和反序列化json是非常常見的處理方式,它可以將一個(gè)json對(duì)象轉(zhuǎn)化為一個(gè)C語言結(jié)構(gòu)體對(duì)象,使得程序能夠更方便地處理json數(shù)據(jù)。
序列化json的過程即將一個(gè)json對(duì)象轉(zhuǎn)化為一個(gè)json字符串,C語言中使用第三方庫(kù)cJSON來實(shí)現(xiàn),使用方法如下:
/*定義一個(gè)結(jié)構(gòu)體*/ typedef struct { int age; char name[20]; } Person; /*序列化json*/ cJSON* root; Person person; ... /*創(chuàng)建一個(gè)json對(duì)象*/ root = cJSON_CreateObject(); /*將person對(duì)象轉(zhuǎn)化為json字符串并添加到j(luò)son對(duì)象中*/ cJSON_AddNumberToObject(root, "age", person.age); cJSON_AddStringToObject(root, "name", person.name); char* jsonstring = cJSON_Print(root);
反序列化json的過程即將一個(gè)json字符串轉(zhuǎn)化為一個(gè)C語言結(jié)構(gòu)體對(duì)象,具體實(shí)現(xiàn)方法如下:
/*反序列化json*/ cJSON* root = cJSON_Parse(jsonstring); /*從json對(duì)象中獲取數(shù)據(jù)并存放到person結(jié)構(gòu)體中*/ Person person; ... person.age = cJSON_GetObjectItem(root, "age")->valueint; strcpy(person.name, cJSON_GetObjectItem(root, "name")->valuestring);
以上即為C語言中序列化和反序列化json的基本方法。