cJSON是一個(gè)用于解析和構(gòu)造JSON數(shù)據(jù)的開(kāi)源工具。在JSON中,數(shù)組是由方括號(hào)包圍的一組值。在某些情況下,我們可能需要修改JSON數(shù)組中的某個(gè)值。下面介紹如何使用cJSON來(lái)替換JSON數(shù)組的值。
// 假設(shè)我們要修改以下JSON數(shù)組中第二個(gè)元素的值 { "fruits" : [ { "name" : "apple", "price" : 2.5 }, { "name" : "banana", "price" : 1.5 }, { "name" : "orange", "price" : 3.0 } ] }
首先,我們需要通過(guò)cJSON_Parse函數(shù)解析JSON數(shù)據(jù):
cJSON *root = cJSON_Parse(json_str);
然后,我們可以通過(guò)cJSON_GetObjectItem函數(shù)獲取fruits數(shù)組:
cJSON *fruits = cJSON_GetObjectItem(root, "fruits");
接著,我們可以通過(guò)cJSON_GetArrayItem函數(shù)獲取數(shù)組中的第二個(gè)元素:
cJSON *banana = cJSON_GetArrayItem(fruits, 1);
最后,我們可以使用cJSON_SetNumberValue函數(shù)將banana的price屬性值設(shè)置為新的值:
cJSON_SetNumberValue(cJSON_GetObjectItem(banana, "price"), 2.0);
修改后的JSON數(shù)據(jù)如下:
{ "fruits" : [ { "name" : "apple", "price" : 2.5 }, { "name" : "banana", "price" : 2.0 }, { "name" : "orange", "price" : 3.0 } ] }
最后別忘了將修改后的JSON數(shù)據(jù)通過(guò)cJSON_Print函數(shù)進(jìn)行打印:
char *out = cJSON_Print(root); printf("%s\n", out); cJSON_free(out);
以上就是使用cJSON替換JSON數(shù)組的值的方法。