#cpp #json
Имеется примерно такая json строка: {"response":[{"id":210700286,"first_name":"Lindsey","last_name":"Stirling"}]} Как из неё получить значения firstname и lastname? string firstname = "Lindsey"; string lastname = "Stirling";
Ответы
Ответ 1
Воспользуйтесь какой-нибудь библиотекой, например nlohmann/json. Обратите внимание, что в коде ниже используется удобная запись строковых литералов без экранирования в форме R"(строка, которая может содержать кавычки. круглые скобки являются частью синтаксиса и не относятся к строке)". #include "json.hpp" using json = nlohmann::json; int main() { string responseString = R"({"response":[{"id":210700286,"first_name":"Lindsey","last_name":"Stirling"}]})"; json responseJson = json::parse(responseString); json object = responseJson["response"]; string first_name = object[0]["first_name"]; string last_name = object[0]["last_name"]; cout << first_name << endl; cout << last_name << endl; return 0; } Вот пример работы.Ответ 2
как разработчик shell утилиты jtc предлагаю очень удобную (конечно это мое мнение) c++14 JSON библиотеку - Json.hpp. Ваш пример с данной библиотекой будет выгдядеть вот так: #include#include #include "lib/Json.hpp" using namespace std; int main() { string jstr = R"({"response":[{"id":210700286,"first_name":"Lindsey","last_name":"Stirling"}]})"; Json j{jstr}; string firstname = *j.walk(" l"); string lastname = *j.walk(" l"); cout << firstname << endl; cout << lastname << endl; } Output: bash $ c++ -o e -std=c++14 example.cpp bash $ e Lindsey Stirling bash $ Хотя, можно было-бы конечно так же легко получить эти значения через прямую аддресацию: string firstname = j["response"][0]["first_name"]; string lastname = j["response"][0]["last_name"];
Комментариев нет:
Отправить комментарий