boost::property_tree::json_parser::read_json и Twitter?

Я попробовал очень быстро в качестве теста, чтобы увидеть, смогу ли я передать свой твиттер-канал для парсера JSON Boost. Нет игральных костей. Мой синтаксический анализатор JSON не может обработать следующие строки:

"profile_background_image_url":"http:\/\/a2.twimg.com\/profile_background_images\/4531792\/wallpaper_stock.jpg",
"url":"http:\/\/on.fb.me\/bShBVQ",
exception error: "invalid escape sequence"

"id":86162751646482432,
exception error: "expected value"

Удаление оскорбительных строк приводит к заполнению дерева свойств. Явно недостаточно для твиттера. Вот код на случай, если я неправильно объявил свое дерево свойств. Помощь?

int main (int argc, char * const argv[]) 
{
    boost::property_tree::basic_ptree<std::string,std::string> pt;
    std::ifstream f;
    f.open("testJSON2a.txt");
    if(!f.is_open())
    {
        std::cout << "Error";
        return 0;
    }

    try
    {
        boost::property_tree::json_parser::read_json(f,pt);
        boost::property_tree::basic_ptree<std::string,std::string>::const_iterator iter = pt.begin(),iterEnd = pt.end();
        for(;iter != iterEnd;++iter)
        {
            std::cout << iter->first << " " << iter->second.get_value<std::string>() << std::endl;
        }
    }
    catch(boost::property_tree::json_parser::json_parser_error &je)
    {
        std::cout << "Error parsing: " << je.filename() << " on line: " << je.line() << std::endl;
        std::cout << je.message() << std::endl;
    }
    return 0;
}

person user805547    schedule 30.06.2011    source источник
comment
сеть фактически переформатировала uri, он должен быть: url:http:\/\/on.fb.me\/bShBVQ,   -  person user805547    schedule 30.06.2011


Ответы (1)


Ответ — обновиться до последней версии boost :-). Судя по всему, эта библиотека далека от стабильной. Основные изменения/рефакторинг в каждой версии.

person user805547    schedule 23.07.2011