CJSON是一個用C語言編寫的輕量級JSON解析器。JSON由鍵和值組成,鍵是唯一的,但CJSON允許重復的鍵。那么CJSON是如何處理重復鍵的呢?
{ "name": "張三", "age": 20, "hometown": { "city": "北京", "city": "上海" } }
在上面的JSON中,hometown對象有兩個相同的鍵:"city"。CJSON中處理這種情況的方式是將最后一個鍵值對保存。也就是說,解析器會把JSON解析成以下內容:
{ "name": "張三", "age": 20, "hometown": { "city": "上海" } }
如果想要獲取所有的鍵值對,可以使用cJSON_GetObjectItemCaseSensitive函數。這個函數可以獲取指定名稱的所有鍵值對,并返回一個數組。
cJSON *hometown = cJSON_GetObjectItemCaseSensitive(root, "hometown"); cJSON *cityArray = cJSON_GetObjectItemCaseSensitive(hometown, "city"); for (int i = 0; i< cJSON_GetArraySize(cityArray); i++) { cJSON *cityNode = cJSON_GetArrayItem(cityArray, i); printf("%s\n", cityNode->valuestring); }
上面的代碼會輸出"hometown"對象中所有的"city"鍵的值。
上一篇c json 通信源碼
下一篇mysql課程表含時間