在C語言中,實現JSON數據對象的操作通常使用Json-C庫。該庫是一個輕量級的C語言JSON解析器,它提供了解析和序列化JSON數據的相關函數。
JSON對象中通常包含了鍵值對,因此可以使用Json-C中提供的json_object對象進行操作。json_object對象表示一個JSON屬性或一個JSON對象。
下面是一個JSON對象的例子:
{ "name": "Tom", "age": 18, "hometown": { "province": "Shandong", "city": "Qingdao" }, "hobbies": [ "reading", "running", "swimming" ] }
以上JSON對象中,name、age、hometown、hobbies都是屬性名,而它們所對應的值則可能是字符串、數字、對象、數組。
在Json-C中,可以通過json_object_new_object()函數創建一個json_object對象,它可以表示一個JSON對象。
json_object *json_obj = json_object_new_object();
通過json_object_object_add()函數向json_object對象中添加屬性,該函數可以接收3個參數:json_object對象、屬性名、屬性值所對應的json_object對象。
json_object *nameObj = json_object_new_string("Tom"); json_object *ageObj = json_object_new_int(18); json_object *hometownObj = json_object_new_object(); json_object *provinceObj = json_object_new_string("Shandong"); json_object *cityObj = json_object_new_string("Qingdao"); json_object_object_add(hometownObj, "province", provinceObj); json_object_object_add(hometownObj, "city", cityObj); json_object *hobbiesObj = json_object_new_array(); json_object_array_add(hobbiesObj, json_object_new_string("reading")); json_object_array_add(hobbiesObj, json_object_new_string("running")); json_object_array_add(hobbiesObj, json_object_new_string("swimming")); json_object_object_add(json_obj, "name", nameObj); json_object_object_add(json_obj, "age", ageObj); json_object_object_add(json_obj, "hometown", hometownObj); json_object_object_add(json_obj, "hobbies", hobbiesObj);
以上代碼將創建一個完整的JSON對象,每個屬性對應的JSON類型在代碼中已經正確指定。
如果已經有一段JSON字符串,可以使用json_tokener_parse()函數將它解析成json_object。
const char *json_str = "{...}"; json_object *json_obj = json_tokener_parse(json_str);
最后,使用json_object_to_json_string()函數將json_object對象轉化成JSON字符串。
const char *json_str = json_object_to_json_string(json_obj); // 輸出json_str即可得到JSON字符串