JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,該格式以易于閱讀和編寫的方式構(gòu)建起來,并且在JavaScript編程語言中得到廣泛應(yīng)用。 它是一種基于鍵值對的數(shù)據(jù)結(jié)構(gòu),其中鍵值對之間用“:”分隔,每個鍵值對之間用逗號分隔。值可以是字符串、數(shù)字、布爾值、數(shù)組、對象(又稱為嵌套對象)等。
{ "name": "Lucy", "age": 32, "isMarried": false, "hobbies": ["reading", "swimming", "traveling"], "address": { "street": "123 Main St", "city": "Los Angeles", "state": "CA", "zipcode": "90001" } }
在上面的示例中,數(shù)據(jù)以大括號包圍,每個鍵值對之間用逗號分隔。 “name”鍵的值為“Lucy”,“age”鍵的值為32,“isMarried”鍵的值為false,“hobbies”鍵的值為包含三個字符串元素的數(shù)組,而“address”鍵的值則是一個包含多個鍵值對的嵌套對象。
在C語言中,如果我們想要解析或創(chuàng)建JSON數(shù)據(jù),我們需要使用一個庫或API。一些廣泛使用的JSON庫包括JSON-C, cJSON和Jansson。 它們可以幫助開發(fā)人員解析JSON數(shù)據(jù)并將其存儲為C結(jié)構(gòu)體,或?qū)結(jié)構(gòu)體轉(zhuǎn)換為JSON格式。 下面是一個簡單的例子,使用JSON-C庫創(chuàng)建JSON字符串。
#include#include int main() { struct json_object *Jobj = json_object_new_object(); json_object *Jstring_name = json_object_new_string("Lucy"); json_object_object_add(Jobj, "name", Jstring_name); json_object *Jint_age = json_object_new_int(32); json_object_object_add(Jobj, "age", Jint_age); json_object *Jbool_isMarried = json_object_new_boolean(false); json_object_object_add(Jobj, "isMarried", Jbool_isMarried); json_object *Jarray_hobbies = json_object_new_array(); json_object_array_add(Jarray_hobbies, json_object_new_string("reading")); json_object_array_add(Jarray_hobbies, json_object_new_string("swimming")); json_object_array_add(Jarray_hobbies, json_object_new_string("traveling")); json_object_object_add(Jobj, "hobbies", Jarray_hobbies); printf("%s", json_object_to_json_string(Jobj)); return 0; }
這個程序使用JSON-C庫創(chuàng)建一個名為“Jobj”的結(jié)構(gòu)體,然后將四個鍵值對添加到對象中。 最后,使用json_object_to_json_string()函數(shù)將對象轉(zhuǎn)換為JSON格式的字符串并打印該字符串。 輸出將與在前面的段落中的JSON示例完全相同。