Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
tohtarov_ufa
0 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 137
#1

Редактирование JSon - C++ Qt

26.02.2015, 11:00. Просмотров 584. Ответов 3
Метки нет (Все метки)

Добрый день!

У меня есть JSon

C++ (Qt)
1
{"success":1,"result":{"access":[{"archive":false,"camid":37,"streamid":[1]},{"archive":false,"camid":30,"streamid":[1]},{"archive":false,"camid":31,"streamid":[1]},{"archive":false,"camid":32,"streamid":[1]}],"role":"root"}}
Моя задача добавить в массив, находящийся в result:access новый элемент, например {"archive":false,"camid":666,"streamid":[1]}
Никак не могу это сделать( парсить еще умею, а вот добавлять никак. Помогите пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2015, 11:00
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Редактирование JSon (C++ Qt):

Json редактирование
Доброго времени суток. Нашёл на просторах нашего форуму вот такую статейку....

Qt 5 и Json
Здравствуйте, столкнулся с проблемой парсинга Json объектов. Например у меня...

QT 5 Json
Почему функция не возвращает никаких данных? Например для...

Парсинг JSON QT
помогите пожалуйста разобраться как парсить такой запрос "{"response":178368}"...

Экспорт в JSON
Добрый день! Каким образом можно информацию из программы на QT экспортировать в...

Qt разбор JSON
все не могу разобраться в json, с vk возвращает это: "{"response":180075}" ...

3
ArmanPrestige
Pied Piper
232 / 223 / 57
Регистрация: 15.01.2013
Сообщений: 855
Завершенные тесты: 1
26.02.2015, 11:05 #2
Может хоть скажете, чем парсите?
0
tohtarov_ufa
0 / 0 / 1
Регистрация: 13.01.2015
Сообщений: 137
26.02.2015, 11:26  [ТС] #3
Достаю result

C++ (Qt)
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
QString result = QString();
 
    if (&json)
    {
        QJsonDocument jsonDoc;
        QJsonObject obj;
        try
        {
            jsonDoc = QJsonDocument::fromJson(json.toUtf8());
            obj = jsonDoc.object();
            if (obj.contains(name))
            {
                QJsonValue value = obj.value(name);
                if (value.isObject())
                {
                    QJsonObject o = value.toObject();
                    result = HelperJSON::toStr(o);
                }
                else if (value.isArray())
                {
                    QJsonArray a = value.toArray();
                    result = HelperJSON::toStr(a);
                }
                else
                    result = value.toString();
            }
            else
            {
                Logger::log()->Warning(QString("Not found %1 (%2)").arg(name, json), "HelperJSON");
                qDebug() << QString("Not found %1 (%2)").arg(name, json);
                if (isNoError)
                    *isNoError = false;
            }
        }
        catch (...)
        {
            Logger::log()->Warning(QString("Can't parse %1 (%2)").arg(name, json), "HelperJSON");
            qDebug() << QString("Can't parse %1 (%2)").arg(name, json);
            if (isNoError)
                *isNoError = false;
            return result;
тут name = "result", результат возвращается в QString


Примерно такую же функцию использую для записи name = "acces" в массив QByteArray

C++ (Qt)
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
QJsonArray result = QJsonArray();
 
    if (&json)
    {
        QJsonDocument jsonDoc;
        QJsonObject obj;
        try
        {
            jsonDoc = QJsonDocument::fromJson(json.toUtf8());
            obj = jsonDoc.object();
            if (obj.contains(name))
            {
                result = obj.value(name).toArray();
            }
            else
            {
                Logger::log()->Warning(QString("Not found %1 (%2)").arg(name, json), "HelperJSON");
                qDebug() << QString("Not found %1 (%2)").arg(name, json);
                if (isNoError)
                    *isNoError = false;
            }
        }
        catch (...)
        {
            Logger::log()->Warning(QString("Can't parse %1 (%2)").arg(name, json), "HelperJSON");
            qDebug() << QString("Can't parse %1 (%2)").arg(name, json);
            if (isNoError)
                *isNoError = false;
            return result;
        }
    }
    else
    {
        Logger::log()->Warning(QString("Parsing parameter is empty: name (%1), JSON (%2)").arg(name, json), "HelperJSON");
        qDebug() << QString("Parsing parameter is empty: name (%1), JSON (%2)").arg(name, json);
        if (isNoError)
            *isNoError = false;
    }
 
    return result;
Добавлено через 12 минут
QJson в общем
0
ArmanPrestige
Pied Piper
232 / 223 / 57
Регистрация: 15.01.2013
Сообщений: 855
Завершенные тесты: 1
26.02.2015, 11:34 #4
Если вам надо добавить новый элемент в json то есть функция

C++ (Qt)
1
iterator QJsonObject::insert(const QString & key, const QJsonValue & value)
А также перегруженный оператор []

C++ (Qt)
1
QJsonValue  operator[](const QString & key) const
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2015, 11:34
Привет! Вот еще темы с решениями:

Получить Json в Qt 5
В Qt 5 есть какие нибудь средства как преобразовать какой нибудь класс, список,...

Сгенерировать в json
Необходимо разработать графический интерфейс, с помощью которого можно легко...

Сериализация JSON
Подскажите дураку как создать следующий JSON средствами QJsonArray QJsonObject...

Qt JSON or XML
Доброго времени суток. Необходим совет. Есть данные, которые мне необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru