Считать вектор значения строки из файла JSON в C ++ с помощью Boost - PullRequest
0 голосов
/ 14 января 2019

Я новичок в Boost и Json. Это должно быть очень просто, но я не могу найти ответ.

Как мне прочитать значение, которое является вектором строк в C ++, используя Boost.

Содержимое файла Json, например:

{  
"keyword1": ["string1", "string2"],  
"keyword2": ["string3", "string4"] 
}

Наконец, я хотел бы иметь вектор для каждого ключевого слова:

vector<string> keyword1;
vector<string> keyword2;

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Спасибо за помощь.

Этот код работал для меня:

boost::property_tree::ptree pt;
boost::property_tree::read_json("test.json", pt);
BOOST_FOREACH(boost::property_tree::ptree::value_type &v, pt.get_child("entry_name"))
{
     std::cout << v.second.data() << std::endl;
}

Содержимое файла 'test.json':

{
    "entry_name": ["string1", "string2", "string3"]
}

Вывод кода:

string1
string2
string3

Я просто добавлю, что я пробовал разный анализ нескольких строковых значений, в том числе:

std::vector<std::string> vec = pt.get<std::vector<std::string>> ("entry_name");

Это было неправильно.

Я не хотел добавлять новые классы / библиотеки, такие как 'rapidJson' или 'nlohmann', только повышать библиотеку.

0 голосов
/ 14 января 2019

Ваша лучшая ставка в boost - использовать что-то вроде этого в этом вопросе: Чтение JSON с Boost property_tree

Если вам нужно сделать это проще, я настоятельно рекомендую вам использовать https://github.com/nlohmann/json и использовать json::parse API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...