2015-05-07 3 views
3

Я хотел бы использовать подталкивание библиотека (Tree Property), чтобы разобрать следующий допустимый файл в формате JSON:Разбор JSON файл (C++ Boost)

{ 
    "user": { 
     "userID": "5C118C8D-AA65-49C0-B907-348DE87D6665", 
     "dateProperty": "05-06-2015" 
    }, 
    "challenges": [ 
     { 
      "question#1": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     }, 
     { 
      "question": "answer", 
      "value": 5 
     } 
    ] } 

я проверить, что формат JSON был правильным.

Я также консультировался с несколькими сайта, такие как:

Но я до сих пор не получили должных результатов. Я хотел бы собрать «пользователь» и «проблемы» в качестве пар ключ/значение. Лучшим результатом было бы написать «проблемы» (вопрос/ответы) и информацию о пользователе (userID, dateProperty) в std :: пару, которая может быть записана в std: map.

Любые предложения были бы оценены?

ответ

2

Я думаю, что, как обычно, вы просто смущены о how ptree stores JSON arrays?

Вот краткий демо:

Live On Coliru

#include <boost/property_tree/ptree.hpp> 
#include <boost/property_tree/json_parser.hpp> 
#include <iostream> 
#include <fstream> 

int main() 
{ 
    using namespace boost::property_tree; 

    ptree pt; 
    read_json(std::cin, pt); 

    for (auto& challenge : pt.get_child("challenges")) 
     for (auto& prop : challenge.second) 
      std::cout << prop.first << ": " << prop.second.get_value<std::string>() << "\n"; 
} 

Печать:

question#1: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
question: answer 
value: 5 
+0

Спасибо, что сделали решить проблему –

Смежные вопросы