- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
最初在 mac 上做了一个项目,现在我想使用我的 Linux 机器来做同样的项目。设置文件夹依赖:
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonParseError>
这些未包含在我的 SL5 qt-devel 安装中 - 它使用 QT v4。所以我下载了QJson from 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
所以现在我在 QString 中有这个 json,就像我对旧的工作方法所做的那样,然后我尝试按照给我的说明进行解析。我用过:#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);
}
我得到的错误:
error: no matching function to call to 'Qjson::Parser:parse(QString&, bool)
如果我删除包含内容,则会出现错误:
QJson has not been declared
所以它至少必须找到库。关于出了什么问题有什么想法吗?
最佳答案
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;
}
关于c++ - QJson for Linux - 不确定如何正确使用 QJSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25846759/
一些背景 最初在 mac 上做了一个项目,现在我想使用我的 Linux 机器来做同样的项目。设置文件夹依赖: #include #include #include #include 这些未包含
现在我正在将我的项目从 Linux 移植到 Windows。 我通过 instructions 使用 QtCreator 构建了 QJson ,现在我有一个简单的问题:我应该将库 dll 文件移到哪里
我正在使用 QJson 进行解析。但我遇到了一些问题。我使用了以下代码: void CityBook ::getCityList(QUrl url) { //!connect(ci
现在我正在使用 Qt v2.3我有一个问题,我需要使用 json 将数据发送到服务器,但 Qjson 类不存在。如何将 JSON 包含到 Qt 中?或者是否有任何外部头文件? 最佳答案 您可能指的是
我目前正在使用带有核心 QJson 库的 Qt5.0 来处理我正在开发的程序的一些数据。 为了解决这个问题,我将为您提供一些 JSON 数据来说明我的问题: { "CLOCKS": [
如何从一个 qt 项目中引用 qjson.dll 文件? 例如 :C:\qjson-0.7.1\qjson\build\lib ,在这个位置,我有 qjson.dll 和 qjson.dll.a 文件
使用QSettings保存UI设置既麻烦又容易出错,因为每次你都必须使用setValue()和value()函数,而且定义组、应用程序名称和组织,这些在大型应用程序中可能会出现错误: QSetting
我已经按照存档中的说明成功(?)安装了 QJson 库。但是编译器给我这个错误: Undefined reference to QJSon::Parser::Parser(). 我找到了安装库文件的位
当我尝试运行从该链接下载的 Qt 项目时出现此错误 https://code.google.com/p/qml-google-maps/downloads/list 我正在尝试在 Qt 5.0.2 中
我是一名优秀的程序员,十分优秀!