Форум программистов, компьютерный форум CyberForum.ru

Boost, JSON, объект. Распарсить строку - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ООП, простейшие классы http://www.cyberforum.ru/cpp-beginners/thread1159791.html
Задачи как таковой нет, просто создание системы классов с открытым наследованием. Классы описывают картинную галерею, методы осуществляют аукцион (продажа по максимальной цене), есть перегрузка оператора потокового вывода. /*/////////////////////////////////////////// ГЛАВНЫЙ ФАЙЛ ПРОГРАММЫ // *//////////////////////////////////////////// #include "stdafx.h" #include...
C++ Размер строки указателя char *str = new char ; str = "123"; sizeof(str) - отображает размер указателя, а как вывести размер самой строки строки? http://www.cyberforum.ru/cpp-beginners/thread1159788.html
C++ Найти средний балл
помогите прошу надо найти средний балл города минск только на С++
Проверить работу условных операторов C++
Здравствуйте в программе необходим вычислить z={(a-b+c)+min(a,b), a-b>7; min (a,b)/b, a-b<7; max (a,b), a-b =7. Переменная Z должна принимать действиельные значения, если выражение (Ац ИЛИ Вц) И (Фц ИЛИ Сц) не равно нулю, и целое значение в противном случае. Через Ац, Вц и Сц обозначены целые чисти значений a,b,c. Значения а, b,c ввести с клавиатуры. Вот сам код, но я немогу понять как...
C++ Ввод предложения с консоли http://www.cyberforum.ru/cpp-beginners/thread1159736.html
Здравствуйте, как в 7 строке сделать самостоятельный ввод текста. #include <iostream> #include <string> using namespace std; int main(){ string str = "I need insert a few spaces in this string."; int a = 60; int d;
C++ Даны строки s, s0. Найти количество вхождений строки s0 в строку s Даны строки s, s0. Найти количество вхождений строки s0 в строку s. подробнее

Показать сообщение отдельно
MatthewThunder
0 / 0 / 0
Регистрация: 15.05.2013
Сообщений: 18
28.04.2014, 09:38     Boost, JSON, объект. Распарсить строку
Доброго времени суток! Столкнулся с такой проблемой: никак не могу бустом распарсить такую вот строку:
Javascript
1
{"data" : {"line_1": [1,2,3,4,5],"line_2": [5,4,3,2,1]}}
Подскажите каким образом можно достать обьект? Спасибо!

UPD: Мой код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
void    j_parse()
    {
        string json_string = "{ \"data\" : {\"line_1\":[1, 2, 3, 4, 5], \"line_2\" : [5, 4, 3, 2, 1]} }";
        //Создаем входной поток
        std::stringstream InputStream(json_string);
 
        try
        {
            // Создаем обьект PropertyTree
            boost::property_tree::ptree InputTree;
 
            //Читаем JSON - строку
            boost::property_tree::read_json(InputStream, InputTree);
 
            // Получаем отформатированную JSON - строку
            boost::property_tree::write_json(InputStream, InputTree);
 
            string InputString;   // Входная JSON - строка
            InputString = InputStream.str();
 
            // Корректируем ошибку  JSON, связанную с появлением символа \/ вместо /
            int pos = InputString.find("\\");
            if (pos>-1)
                InputString = InputString.replace(InputString.find("\\"), 1, "");
            // Выводим входную строку на экран
            cout << endl << "Entered JSON - string: " << endl;
            cout << InputString << endl;
 
            // Извлекаем даные из обьекта InputTree
            string line1 = InputTree.get<string>("line_1");
            string line2 = InputTree.get<string>("line_2"); 
            string data = line1 + ' ' + line2;
            // Создаем оьект OutputTree
            boost::property_tree::ptree OutputTree;
            // Создаем в нем пару ключ-значение
            OutputTree.put("Result", data);
 
            //Создаем выходной поток
            std::stringstream output_stream;
 
            //Записываем JSON-строку в выходной поток
            boost::property_tree::write_json(output_stream, OutputTree);
 
            //Получаем JSON-строку из потока
            string outputJSONCode = output_stream.str();
 
            cout << endl << "Output JSON - string: " << endl;
 
            // Корректируем ошибку  JSON, связанную с появлением символа \/ вместо /
            /*pos = outputJSONCode.find("\\");
            if (pos>-1)
            outputJSONCode = outputJSONCode.replace(outputJSONCode.find("\\"),1,"");*/
 
            // Выводим результат на экран
            cout << outputJSONCode << endl;
            
        }
        catch (boost::property_tree::json_parser_error& error)
        {
            cout
                << error.message() << ": "
                << error.filename() << ", line "
                << error.line() << endl;
        }
    }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru