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

Редактирование JSon

26.02.2015, 11:00. Просмотров 621. Ответов 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 редактирование
Доброго времени суток. Нашёл на просторах нашего форуму вот такую статейку....

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

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

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

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

3
ArmanPrestige
Pied Piper
232 / 223 / 57
Регистрация: 15.01.2013
Сообщений: 855
Завершенные тесты: 1
26.02.2015, 11:05 2
Может хоть скажете, чем парсите?
0
tohtarov_ufa
0 / 0 / 0
Регистрация: 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

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

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

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


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

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

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