Поле 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");
}
Другие вопросы по тегам