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

标签 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 ..

最佳答案

似乎 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

关于json - 在QT中打印没有换行符的json文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39466825/

相关文章:

javascript - 有没有一种方法可以用 MongoDB 识别的 JSON 来表示 ISODate 和 ObjectID 字段?

sql - 检查一个或多个 id 是否在 json 字符串中

linux - 运行create_data.sh时出现权限问题

linux - Net-SNMP perl 模块不会

java - Linux 服务器中的 "java.sql.SQLException: I/O Error: Connection reset"

c++ - Qimage:内存不足,返回空图像

c++ - Qt定义类似于-D的变量

json - 无法在golang程序中解析json值

c++ - 通过 C API 提供 QWidget 的 DLL

javascript - API 响应是数组的数组。第一个数组是对象键值对中的键