C語言中使用JSON進行數據處理時,取值操作是非常常見的需求。下面介紹幾種常見的JSON取值方法。
//假設已經解析出了以下JSON數據 char* data = "{\"name\":\"Tom\",\"age\":20,\"grades\":[89,94,78],\"address\":{\"province\":\"Shanghai\",\"city\":\"Shanghai\",\"location\":{\"latitude\":31.231582,\"longitude\":121.472640}}}"; //1. 使用cJSON_GetObjectItem獲取對象成員 //獲取name屬性 cJSON* obj = cJSON_Parse(data); cJSON* nameObj = cJSON_GetObjectItem(obj, "name"); if(nameObj != NULL){ printf("name: %s\n", nameObj->valuestring); } //獲取grades數組 cJSON* gradesObj = cJSON_GetObjectItem(obj, "grades"); int gradesCount = cJSON_GetArraySize(gradesObj); for(int i=0; ivalueint); } //獲取location對象的longitude屬性 cJSON* addressObj = cJSON_GetObjectItem(obj, "address"); cJSON* locationObj = cJSON_GetObjectItem(addressObj, "location"); double longitude = cJSON_GetObjectItem(locationObj, "longitude")->valuedouble; printf("longitude: %f\n", longitude); //2. 使用cJSON_GetObjectItemCaseSensitive獲取對象成員(大小寫敏感) //與cJSON_GetObjectItem類似,但區分屬性名大小寫 cJSON* nameObj2 = cJSON_GetObjectItemCaseSensitive(obj, "Name"); //3. 使用cJSON_GetObjectItemCaseSensitive的重載方法獲取數字類型屬性 int age = cJSON_GetObjectItemCaseSensitive(obj, "age")->valueint; double latitude = cJSON_GetObjectItemCaseSensitive(locationObj, "latitude")->valuedouble;
通過以上取值方法,可以方便地獲取JSON中的各種數據類型,靈活地處理JSON數據。
上一篇vue demo 講解