Анализатор Qt json возвращает ошибку синтаксического анализа

#qt #json

#qt #json

Вопрос:

Я пытаюсь проанализировать строку json, используя этот метод:

 QString ourJSONData = QString('{"couchdb":"Welcome","version":"1.0.1"}');
QString response = QString("[")   QString(ourJSONData)   QString("]");

QScriptEngine engine;
QScriptValue sc = engine.evaluate(response);

ui->label->setText(sc.toString());
  

Но метка возвращает

Ошибка синтаксического анализа: ошибка синтаксического анализа

Я использую Qt 4.7.4

Что я делаю не так? Спасибо.

UPD:

Извините, проблема была в этой строке:

QString ourJSONData = QString(‘{«couchdb»:»Добро пожаловать»,»версия»:»1.0.1″}’);

необходимо изменить:

QString ourJSONData = QString(«{«couchdb»:»Добро пожаловать «,»версия»:»1.0.1″}»);

PS этот метод я нашел в http://blog.siegerstein.com/archives/134

Комментарии:

1. Вы должны использовать настоящий синтаксический анализатор JSON для обработки JSON вместо eval функции движка JavaScript.

Ответ №1:

Я встроил ваш код в QtCreator и получил очень полезное сообщение об ошибке:

символьная константа слишком длинная для своего типа

Это потому, что ваша ourJSONData переменная инициализируется текстом в одинарных кавычках, который предназначен для одиночных символов.

Это исправит эту инициализацию. (Я поставил перед каждой двойной кавычкой, а затем изменил одинарные кавычки на двойные):

 QString ourJSONData = QString("{"couchdb":"Welcome","version":"1.0.1"}");