QJson for Linux — Не знаете, как правильно использовать QJSON

Некоторый Фон

Первоначально сделал проект на Mac, теперь я хочу использовать мою машину Linux для того же проекта. Папка настроек опиралась на:

#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonParseError>

Они не были включены в мою установку qt-devel для SL5 — она ​​использует QT v4. Итак, я скачал QJson от Sourceforge и установлен с помощью cmake. Пример вывода:

--Installing: /usr/include/qjson/parser.h
--Installing /usr/lib/libqjson.so

Все в порядке. Поэтому я добавил в свой .pro:

LIBS += -L/usr/lib/ -lqjson
INCLUDEPATH += /usr/include/qjson/

Актуальная проблема

Теперь у меня есть задача перевести мой старый settings.cpp файл для анализа данных в этом немного новом методе.

{
"HwDescription": {
"ConnectionsName": "file://settings/connections.xml",
"ShelveId": 0,
"BeBoard": {
"Id": 10,
"connectionId": "board0",
"boardType": "GLIB"}, // + more boring stuff

Так что теперь у меня есть этот json выше в QString, так же как я сделал для моего старого метода работы, затем я пытаюсь проанализировать в соответствии с данными мне инструкциями. Я использовал: #include <qjson/parser.h> и я не думаю, что мне нужны какие-либо предварительные заявления здесь.

    QJson::Parser parser;
bool ok;
QVariantMap result = parser.parse (raw_json, &ok).toMap(); //where raw_json is a QString - this is where I get an error
if (!ok)
{
qFatal("An error occured during parsing");
exit (1);
}

Ошибка, которую я получаю:

ошибка: нет подходящей функции для вызова ‘Qjson :: Parser: parse (QString&, бул)

Если я удаляю включение, ошибка говорит:

QJson не был объявлен

Так что, по крайней мере, нужно найти библиотеки. Любые идеи о том, что идет не так?

0

Решение

Комментарии не обрабатываются по умолчанию в QJson.

Вот небольшая адаптация моей логики QJson для обработки комментариев. Обратите внимание на простое регулярное выражение для удаления комментариев.

QFile file( filename );

//File can't be opened!
if ( !file.open( QFile::ReadOnly ) )
{
qDebug("Couldn't load config file: %s", filename.toLatin1().data());
return;
}

//Strip out comments
QStringList list = QString( file.readAll() ).split('\n');
for ( int i = 0; i < list.size(); i++ )
list[i].replace( QRegExp("//[^\"]*$"), "" );

//Load the file, converting into an object file
QJsonParseError e;
QJsonObject json =
QJsonDocument::fromJson( list.join('\n').toLatin1(), &e ).object();

//Was there an error?
if ( e.error != QJsonParseError::NoError )
{
qDebug( "Json parse error: %s", e.errorString().toLatin1().data() );
return;
}
0

Другие решения


По вопросам рекламы [email protected]