在C語(yǔ)言中操作JSON數(shù)據(jù)是非常常見(jiàn)的,有時(shí)候我們需要將JSON格式的數(shù)據(jù)轉(zhuǎn)換成字符串?dāng)?shù)組,這樣可以方便地進(jìn)行網(wǎng)絡(luò)傳輸或者存儲(chǔ)。
#include <stdio.h> #include <stdlib.h> #include <jansson.h> int main() { // 創(chuàng)建一個(gè)json對(duì)象 json_t *root = json_object(); json_object_set_new(root, "name", json_string("張三")); json_object_set_new(root, "age", json_integer(18)); // 將json對(duì)象轉(zhuǎn)換成字符串?dāng)?shù)組 char *jsonStr = json_dumps(root, JSON_PRESERVE_ORDER | JSON_INDENT(4)); printf("轉(zhuǎn)換后的字符串?dāng)?shù)組:%s", jsonStr); // 釋放內(nèi)存 free(jsonStr); json_decref(root); return 0; }
在上面的代碼中,我們首先創(chuàng)建了一個(gè)JSON對(duì)象,然后調(diào)用json_dumps()函數(shù)將JSON對(duì)象轉(zhuǎn)換成字符串?dāng)?shù)組。該函數(shù)的第一個(gè)參數(shù)為要轉(zhuǎn)換的JSON對(duì)象,第二個(gè)參數(shù)為轉(zhuǎn)換選項(xiàng)。
在轉(zhuǎn)換選項(xiàng)中,JSON_PRESERVE_ORDER用于保留鍵值對(duì)的順序,JSON_INDENT(4)用于縮進(jìn)四個(gè)空格。
最后,我們需要釋放用于存儲(chǔ)字符串?dāng)?shù)組的內(nèi)存和JSON對(duì)象的內(nèi)存。