然后,可以使用以下代碼將JSON字符串轉換為cJSON對象:
const char* jsonStr = "{ \"name\":\"John\", \"age\":30, \"city\":\"New York\" }";
cJSON* cJSONObj = cJSON_Parse(jsonStr);
注意,jsonStr必須是一個符合JSON格式的字符串,否則cJSON_Parse函數將返回NULL。
接下來,可以使用以下代碼訪問cJSON對象的屬性:
cJSON* name = cJSON_GetObjectItem(cJSONObj, "name");
cJSON* age = cJSON_GetObjectItem(cJSONObj, "age");
cJSON* city = cJSON_GetObjectItem(cJSONObj, "city");
可以使用cJSON_Print函數將cJSON對象轉換為字符串形式:
char* jsonOut = cJSON_Print(cJSONObj);
printf("%s\n", jsonOut);
最后,可以將cJSON對象轉換為C語言中的對象數組。下面是一個示例代碼:
typedef struct {
char* name;
int age;
char* city;
} Person;
cJSON* personArrJSON = cJSON_Parse(jsonStr);
int personCount = cJSON_GetArraySize(personArrJSON);
Person* personArr = (Person*)malloc(sizeof(Person) * personCount);
for (int i = 0; i< personCount; i++) {
cJSON* personJSON = cJSON_GetArrayItem(personArrJSON, i);
cJSON* nameJSON = cJSON_GetObjectItem(personJSON, "name");
cJSON* ageJSON = cJSON_GetObjectItem(personJSON, "age");
cJSON* cityJSON = cJSON_GetObjectItem(personJSON, "city");
personArr[i].name = nameJSON->valuestring;
personArr[i].age = ageJSON->valueint;
personArr[i].city = cityJSON->valuestring;
}
上述代碼將JSON對象數組轉換為一個C語言的對象數組,其中每個對象都包含name、age和city屬性。
總之,在C程序中,使用cJSON庫將JSON字符串轉換為對象數組非常簡單。只需要引用cJSON庫、使用cJSON_Parse函數將JSON字符串轉換為cJSON對象、使用cJSON_GetObjectItem函數訪問cJSON對象、使用cJSON_Print函數將cJSON對象轉換為字符串形式,最后使用循環將cJSON對象數組轉換為C語言的對象數組即可。