cJSON — парсинг JSON

Я делаю отдых API и использую библиотеку cJSON c на С++.

Это мой пример запроса тела

{
  "userEmail": "[email protected]",
  "userPassword": "12345678"
}

В моей программе на С++ я получаю этот json следующим образом (теперь он работает):

cJSON *root;

root = cJSON_CreateObject();

cJSON_AddStringToObject(root, "userEmail", userEmail.c_str());
cJSON_AddStringToObject(root, "userPassword", userPassword.c_str());

Теперь мне нужно изменить запрос тела на что-то вроде этого:

{
  "userInfo":{
      "userEmail": "[email protected]",
      "userPassword": "12345678"
  }
}

Примечание. Это не массив, это похоже на «раздел» json. Я не нахожу решения для получения содержимого внутри «userInfo» (почта и пароль) с использованием библиотеки cJSON. Вы можете помочь мне?

Большое спасибо


person Pik93    schedule 04.04.2017    source источник
comment
Я бы рекомендовал github.com/nlohmann/json для JSON в современном C++. Это только заголовок, он прост в использовании и активно развивается.   -  person Andrei Damian    schedule 04.04.2017


Ответы (1)


cJSON *root;
cJSON *info;

root = cJSON_CreateObject();

cJSON_AddItemToObject(root, "userInfo", info = cJSON_CreateObject());
cJSON_AddStringToObject(info, "userEmail", userEmail.c_str());
cJSON_AddStringToObject(info, "userPassword", userPassword.c_str());

репозиторий cJSON Github

person sharyex    schedule 04.04.2017
comment
Привет. Спасибо за комментарий. Помогает мне. Но я забыл написать одну вещь. У меня есть функция, которая получает 2 строки, userEmail и userPassword.. Итак, какие параметры должна получить функция? потому что теперь тело - это не только электронная почта и пароль.. это информация о пользователе... - person Pik93; 04.04.2017
comment
Вы должны иметь возможность использовать те же параметры, userInfo - это просто объект-оболочка, если только вы не имеете в виду, как проанализировать объект и получить значения внутри? - person sharyex; 04.04.2017
comment
Моя функция получает адрес электронной почты и пароль, и я могу анализировать значения и показывать ... но теперь, когда userInfo не работает, мое тело запроса равно нулю - person Pik93; 04.04.2017
comment
В репозитории, на который я ссылался, есть примеры того, как анализировать дочерние элементы объекта. Если вы все еще не можете понять это, сделайте новый пост, я не могу вам помочь, не видя полный код. - person sharyex; 04.04.2017
comment
Я не могу опубликовать весь код, он очень сложный и большой. Мой клиент находится в java и отправляет данные json с моего java-клиента на мой сервер C++. На сервере я анализирую данные, делаю то, что мне нужно, и отправляю обратно моему Java-клиенту ответный ответ. - person Pik93; 04.04.2017