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

Создание переменной из строки json - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20 http://www.cyberforum.ru/cpp-beginners/thread772358.html
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. Добавлено через 53 секунды помогите кто чем может с объяснениями если не трудно
C++ существует ли аналог pair, но для 3х элементов? существует ли аналог pair, но для 3х элементов? Или только так? pair<A, pair<B, C> > obj; http://www.cyberforum.ru/cpp-beginners/thread772353.html
C++ класс контакт непонятная ошибка
похоже где-то с указателями намудрил. не понимаю где( Код: # include <iostream> using namespace std; class contact { char *numb; char *name;
C++ Конструктор
Я вот хотел еще спросить. Вызывается ли второй раз конструктор если вызываешь статический метод ? Например : Код C++ SomeKlass::SomeMethod(); в этом случае вызывается ли второй раз конструктор(без параметров) класса SomeKlass ? Спасибо.
C++ Дана строка символов. Удалить из нее все слова нечетной длины http://www.cyberforum.ru/cpp-beginners/thread772340.html
Дана строка символов. Удалить из нее все слова нечетной длины. Слова отделяются друг от друга одним пробелом
C++ Найти наибольший общий делитель трех натуральных чисел Найти наибольший общий делитель трех натуральных чисел (единица будет считаться наибольшим общим делителем только в том случае, когда других общих делителей у заданных чисел нет) подробнее

Показать сообщение отдельно
Karry
0 / 0 / 0
Регистрация: 26.01.2013
Сообщений: 21
28.01.2013, 05:34  [ТС]     Создание переменной из строки json
gray_fox, оцените пожалуйста!!!)) Наверно написано криво и неграмотно, но вот что получилось...
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#include "stdafx.h"
#include <iostream>
#include <string>
#include <map>
#include <list>
#include <exception>
#include <vector>
#include <math.h>
using namespace std;
typedef vector<string> vector_string;
typedef map<string,string> map_string;
 
#include <sstream>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
namespace bpt = boost::property_tree;
 
class JSON  //jsonlint.com
{
private:
    string container;
public:
    JSON()
    {
        container = "{";
    }
    void add_pair(string name,string value)
    {
        container += "\"" +name + "\":\"" + value + "\",";
    }
    void add_vector(string name, vector_string params)
    {
          container+="\"" + name + "\":[";
          for (int i=0; i < params.size(); i++)
          {
              container+="\"" +params[i] + "\"";
              if (i<params.size()-1)
              {
                  container+=",";
              }
          }
          container+="],";
    }
    void add_map(string name, map_string params)
    {
        container += "\"" +name +"\":{";
        map_string::const_iterator begin = params.begin();
        for(;begin!=params.end(); begin++)
        {
            container+= "\"" + begin->first + "\":\"" +begin->second + "\",";
        }
        container = container.substr(0,container.length()-1)+ "},";
    }
    void add_JSON(string name, JSON * json)
    {
        container += "\"" +name + "\":" +json->get_as_string() +",";
    
    }
    string get_as_string()
    {
        return container.substr(0,container.length()-1)+ "}";
    }
};
void add_tabs(std::ostream & ostream, size_t t) 
{
   while (t-- != 0) 
   {
       ostream << '\t';
   }
}
 
void print_children(ostream & ostream, bpt::ptree const& tree, size_t const t = 0) 
{
   for (bpt::ptree::const_iterator it = tree.begin(); it != tree.end(); ++it) 
   {
       add_tabs(ostream, t);
       ostream <<  it->first << ":" << it->second.data() << endl;
       if (!it->second.empty()) 
       {
           print_children(ostream, it->second, t + 1);
       }
   }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    JSON a;
    a.add_pair("test string","test value");
    vector_string s;
    s.push_back("10");
    s.push_back("20");
    s.push_back("30");
    s.push_back("40");
    s.push_back("50");
    a.add_vector("array1", s);
    a.add_JSON("json test", &a);
    map_string ms;
    ms["green"] = "apple";
    ms["red"] = "cherry";
    ms["yallow"] = "banana";
    ms["black"] = "chernika";
    a.add_map("fruits",ms);
    cout << a.get_as_string() << endl;
    cout <<endl;
 
 
    string jsonStr = a.get_as_string();
    istringstream iss(jsonStr);
    bpt::ptree config;
    bpt::read_json(iss, config);
 
    while(true)
    {
        string var;   // путь к переменной через . (точку) (i.e. "one.two.three")
        cout << "Var: ";
        getline(cin,var);
        if(var == "test string")
        {
            string const& value = config.get<string>(var);
            cout << value << std::endl;
        }
        else if(var == "fruits")
        {
            const boost::property_tree::ptree& server = config.get_child(var);
            cout << "fruits\n"
                << "black:\t" << server.get<std::string>("black") << '\n'
                << "green:\t" << server.get<std::string>("green") << '\n'
                << "red:\t" << server.get<std::string>("red") << '\n'
                << "yallow:\t" << server.get<std::string>("yallow") << '\n';
        }
        else if(strcmp("fruits.**",var.c_str())<0)
        {
            string const& value = config.get<string>(var);
            cout << value << std::endl; 
        }
        else if(var == "array1")
        {
            bpt::ptree const& arrayNode = config.get_child(var);
            for (bpt::ptree::const_iterator it = arrayNode.begin(); it != arrayNode.end(); ++it)
            {
                cout << it->second.get<int>("") << endl;
            }
        }
        else if(var == "json test")
        {
            bpt::ptree const& node = config.get_child("json test");
            print_children(cout, node);
        }
    }
    return 0;
}
последний вывод json test так и не заработал(
 
Текущее время: 01:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru