Я пытаюсь написать настольный клиент с Qt для сайта онлайн-словаря .Я застрял на чем-то о JSON.
http://ac.tureng.co/?c=?&t=expensive
?(["expensive","expensive habits","expensive medical equipment","expensive question","expensive watch","expensive-looking","expensively","expensiveness"]);
Я думаю, что данные, которые приходят с вышеуказанного адреса, являются массивом JSON.json.org имеет следующее описание:
Массив - это упорядоченная коллекция значений.Массив начинается с [(левая скобка) и заканчивается] (правая скобка).Значения разделяются, (запятая). *
Также допустимый JSON в соответствии с JSON Formatter , если вместо первого вопроса записана строкаmark:
a([
"expensive",
"expensive habits",
"expensive medical equipment",
"expensive question",
"expensive watch",
"expensive-looking",
"expensively",
"expensiveness"
]);
Но этого изменения недостаточно для JSONLint сайта:
["expensive", "expensive habits", "expensive medical equipment", "expensive question", "expensive watch", "expensive-looking", "expensively", "expensiveness"]
Я хочу показывать предложения пользователю при вводе пользователем, используяданные отсюда.Пока я не могу извлечь JSON, поэтому я достиг желаемого поведения, действуя как обычный текст.Есть ли способ сделать это правильно, анализируя JSON?
Коды, которые я написал до сих пор:
QString turengOneriMetin = QString("http://ac.tureng.co/?c=?&t=%1").arg(arg1);
QUrl turengOneri(turengOneriMetin);
QNetworkAccessManager manager;
QNetworkReply *response = manager.get(QNetworkRequest(turengOneri));
QEventLoop event;
connect(response, SIGNAL(finished()), &event, SLOT(quit()));
event.exec();
QString content = response->readAll();
content.replace(0,1,"a");
content = content.replace("a([", "").replace("]);", "").replace("\"","");
QStringList wordList;
wordList << content.split(",");
ui->label->setText(content);
// https://stackoverflow.com/questions/24248606/how-to-accomplish-drop-down-word-suggestions-in-qt
QCompleter *completer = new QCompleter(wordList, this);
completer->setCaseSensitivity(Qt::CaseInsensitive);
ui->lineEdit->setCompleter(completer);
Обновление: После получения JSON правильнос помощью ответов и других ресурсов я сделал то, что хотел, с помощью следующего фрагмента кода:
QJsonDocument document = QJsonDocument::fromJson(content.toUtf8());
QJsonArray documentArray = document.array();
QStringList wordList;
for (const QJsonValue &i : documentArray)
{
//qInfo() << i.toString() << endl;
wordList << i.toString();
}