首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QJson for Linux -不确定如何正确使用QJSON

QJson for Linux -不确定如何正确使用QJSON
EN

Stack Overflow用户
提问于 2014-09-15 11:13:10
回答 1查看 1.5K关注 0票数 0

一些背景

最初在mac上做了一个项目,现在我想将我的Linux机器用于同一个项目。设置文件夹依赖于:

代码语言:javascript
复制
#include <QJsonObject>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonParseError>

这些不包括在我的QT安装为SL5 -它使用的QT v4。所以我下载了来自Sourceforge的QJson并使用cmake进行了安装。一些示例输出:

代码语言:javascript
复制
--Installing: /usr/include/qjson/parser.h
--Installing /usr/lib/libqjson.so

这很好。因此,我在我的.pro中添加了:

代码语言:javascript
复制
LIBS += -L/usr/lib/ -lqjson
INCLUDEPATH += /usr/include/qjson/

实际问题

现在,我的任务是将我的旧settings.cpp文件转换为在这个稍微新的方法中解析数据。

代码语言:javascript
复制
{
  "HwDescription": {
    "ConnectionsName": "file://settings/connections.xml",
    "ShelveId": 0,
    "BeBoard": {
      "Id": 10,
      "connectionId": "board0",
      "boardType": "GLIB"
    }, // + more boring stuff

现在,我在一个QString中使用了上面的json,就像我以前的工作方法一样,然后我尝试按照给我的指令进行解析。我使用:#include <qjson/parser.h>和我认为我在这里不需要任何前向声明。

代码语言:javascript
复制
    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::解析器:解析(QString&,bool)的匹配函数

如果删除包含,错误如下:

QJson尚未声明

所以至少它是在寻找图书馆。对出什么问题有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2014-09-15 11:17:34

默认情况下,在QJson中不解析注释。

下面是我在QJson逻辑上为处理注释所做的一个小调整。请注意移除注释的简单Regex。

代码语言:javascript
复制
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;
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25846759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档