Russian Qt Forum

Qt => Общие вопросы => Тема начата: Zusykss от Февраль 24, 2019, 21:52



Название: Сложный json файл Как открыть ??
Отправлено: Zusykss от Февраль 24, 2019, 21:52
Пробую открыть как обычно json файл
Код:
QJsonDocument jsonDoc = QJsonDocument::fromRawData(json.toStdString().c_str(),json.length());
            auto obj = jsonDoc.object();

Пробовал вставлять
через метод
fromJson
Не открывается obj пустой
Подскажите что не так делаю
Файл прикладываю


Название: Re: Сложный json файл Как открыть ??
Отправлено: ssoft от Февраль 25, 2019, 07:37
Цитировать
... caller has to guarantee that data will not be deleted or modified as long as any QJsonDocument, QJsonObject or QJsonArray still references the data.

В примере никак не гарантируется существование данных (toStdString().c_str() - создает временный объект).
Используйте fromJson вместо fromRawData.

Да, и файл не полный, обрывается на "IsIconP

Цитировать
Returns a valid (non-null) QJsonDocument if the parsing succeeds. If it fails, the returned document will be null, and the optional error variable will contain further details about the error.
Проверьте парсер на наличие ошибок после чтения.


Название: Re: Сложный json файл Как открыть ??
Отправлено: Zusykss от Февраль 25, 2019, 10:02
Почти сделал как надо только столкнулся с новой проблемой)
Вот есть json файл , я из него получаю данные.
Код:
            QJsonDocument jsonDoc = QJsonDocument::fromJson(json.toUtf8());
            auto obj = jsonDoc.object();

            foreach(const QJsonValue & value, obj)
            {
                auto objarr = value.toArray();
                QString asin = value.toString();
                QString size = objarr[0].toString();
                QString color = objarr[1].toString();

            }

Вопрос в том чего я не могу получить значение самого массива ???
Это вот эти значения "B07LBQBCPM":
{"B07LBQBCPM":["A29","0-6 months"],"B07D7S1Q65":["Yellow3","13-24 months"],"B07D7SD4HT":["Blue4","0-6 months"],"B07D7RT68Z":["Blue4","13-24 months"],"B07D7S37TY":["Red3","0-6 months"],"B07FPGB53C":["A24","13-24 months"],"B07FPQYJPC":["A2","13-24 months"],"B07FPXKGBN":["A6","7-12 months"],"B07D7R6KTH":["Yellow3","7-12 months"],"B07FP74FFP":["A20","13-24 months"],"B07D7SFG99":["White5","7-12 months"],"B07D7RFY7X":["Pink5","7-12 months"],"B07D7T73LY":["Pink7","0-6 months"],"B07FPLG312":["A27","7-12 months"],"B07D7SPN97":["White5","0-6 months"],"B07FPKYWT5":["A27","0-6 months"],"B07LBQ9GJF":["A28","0-6 months"],"B07FPG3G34":["A27","13-24 months"],"B07LBNQ7HM":["A28","7-12 months"],"B07FPCJRVY":["A9","7-12 months"],"B07FPFFQNP":["A24","0-6 months"],"B07FPBT2F5":["A24","7-12 months"],"B07FPC2XQZ":["A20","0-6 months"],"B07D7RZNSX":["Pink4","13-24 months"],"B07LBMV1ZX":["A29","13-24 months"],"B07D7SBLGX":["Blue3","0-6 months"],"B07D7RRYZQ":["Mint3","7-12 months"],"B07D7SP751":["Yellow3","0-6 months"],"B07FY3QDHB":["A22","0-6 months"],"B07FPDDB78":["A6","13-24 months"],"B07LBPFB42":["A28","13-24 months"],"B07FY6CZJW":["A22","7-12 months"],"B07FP9G397":["A9","13-24 months"],"B07D7SP7DR":["Blue4","7-12 months"],"B07D7RT8K5":["Pink4","7-12 months"],"B07FP9GQTZ":["A2","7-12 months"],"B07D7SD3TN":["Blue3","13-24 months"],"B07FPSXWL6":["A20","7-12 months"],"B07LBNZ5H1":["A29","7-12 months"],"B07D7RSDG3":["Pink3","13-24 months"],"B07D7T3CH7":["Pink4","0-6 months"],"B07D7S7Z98":["Blue3","7-12 months"],"B07FPHWQJ2":["A2","0-6 months"],"B07FPBMVC8":["A9","0-6 months"],"B07D7STQ8T":["Black3","13-24 months"],"B07D7SJ9SW":["Pink3","7-12 months"],"B07FPWN3B1":["A6","0-6 months"],"B07FY2F84V":["A22","13-24 months"],"B07D7S6NHD":["White5","13-24 months"]}


Название: Re: Сложный json файл Как открыть ??
Отправлено: Zusykss от Февраль 25, 2019, 10:06
Все оказалось очень просто

    QStringList list = obj.keys();
В этом листе все ключи