在QT中打印没有换行符的json文件内容

时间:2016-09-13 09:41:07

标签: json linux qt terminal

我有这个Json文件:

{
  "place": {
  "id": "99"
  },
  "camera": {
  "id": "99",
  "url": "http://192.168.0.250/stuff.php?",
  }
}

我得到的是在一行中打印的所有内容,在每个字段后打印字符\ n而不是在文件中打印。这发生在我的Ubuntu机器上,而不是在Debian的另一台机器上。 我想逐行打印文件内容..任何提示? 我使用此代码来打印Json文件的内容:

QString val;
QFile file;
file.setFileName("../config.json");
file.open(QIODevice::ReadOnly | QIODevice::Text);
val = file.readAll();
file.close();
qWarning() << val;

修改

尝试用户TheDarkKnight提供的两个解决方案没有运气,我也尝试在终端中使用cat命令并且文件打印正确,所以我怀疑不是操作系统的问题,但Qt涉及.. < / p>

2 个答案:

答案 0 :(得分:1)

似乎qWarning()函数转义了不可打印的字符并在最后添加了新行字符,因此解决方案是使用:

qWarning().noquote()

https://stackoverflow.com/a/39561345/4267439

然而,这发生在Qt 5.4中,这改变了qWarning行为,所以我的最终解决方案是这个预处理器指令:

 #if (QT_VERSION > QT_VERSION_CHECK(5, 4, 0))
   qWarning().noquote() << val;
 #else
   qWarning() << val;
 #endif

答案 1 :(得分:0)

使用QJsonDocument格式化数据并从那里导出

//Assuming data is in QString val

QJsonDocument doc = QJsonDocument::fromJson(val.toUtf8());
QString formatted = doc.toJson(QJsonDocument::Indented);

qDebug() << formatted;