Поле cJSON не существует
У меня есть массив JSON следующим образом. Я использую cJSON для его анализа. Тем не менее, я хочу проверить, существует ли поле в моем массиве. Я попытался использовать cJSON_GetObjectItem и cJSON_IsNull и сравнить его возвращаемое значение с NULL, чтобы определить, если поле не существует.
Но это не похоже на работу. Есть ли какой-нибудь другой способ узнать, присутствует ли поле или нет (например, возраст отсутствует во втором подмассиве)?
"people":
[
{
"name": "Mickey",
"age": 7
},
{
"name": "Susan"
}
]
2 ответа
Чтобы проверить, существует ли ключ в json, можно сделать что-то вроде:
cJSON *name=cJSON_GetObjectItem(root,"name");
cJSON *age=cJSON_GetObjectItem(root,"age");
if (name) printf("name: %s\n",name->valuestring);
if (age) printf("age: %s\n", age->valuestring);
cJSON *age=cJSON_GetObjectItem(root,"age");
if (cJSON_IsString(age) && (age->valuestring != NULL))
{
printf("The age is %s. \n", age->valuestring);
}
else
{
printf("The age is NULL. \n");
}