c++ - 如何解析 QString 中的转义序列?

标签 c++ qt qstring qjson

我有一个 QString,我需要将它插入到 QJsonArray。问题是字符串是按原样插入的,转义序列不起作用。

    QString fmt = QString("{\n \"%1\":\"%2\"\n}").arg(id,name);
    QJsonValue qjv(fmt);
    labellist.insert(lSize, qjv);

这里,qstring 由“id”和“name”(它们也是 QString)的值填充,然后插入到 qjsonarray。这里的labellist是一个QJsonArray。 QString 的输入例如是“55”和“ggg”。当我像这样打印 qstring 时

    qDebug().noquote() << fmt;

它给了我

    {
     "55":"ggg"
    }

但是如果我将它插入标签列表并打印它给出的标签列表:

    QJsonArray([{"121":"fuu"},{"122":"cat"},{"123":"dog"},"{\n \"55\":\"ggg\"\n}"])

上面数组中QJsonvalues的格式丢失了。

如何解码字符串以保留格式并使转义序列起作用?

最佳答案

我会使用QJsonDocument静态方法fromJson(),像这样:

  QString fmt = QString("{\n \"%1\":\"%2\"\n}").arg("id","name");

  QJsonDocument doc = QJsonDocument::fromJson(fmt.toLocal8Bit());
  QJsonObject obj = doc.object();

  QJsonArray array;
  array.append(obj);

  qDebug() << array;

关于c++ - 如何解析 QString 中的转义序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47081374/

相关文章:

c++ - Visual C++跨平台开发通用SDL项目

c++ - (void) 在 C++ 中是什么意思?

c++ - 'implicit sharing' 是否可从 Qt 类继承?

c++ - TableView鼠标悬停显示工具提示

c++ - 在 Qt 中将 WCHAR 转换为 QString

c++ - QString,解析和替换一些特定的部分

pyqt - QGIS PyQt4 缺少 QString 类

c++ - 调用 CudaFree 时多线程 CPU CUDA 应用程序不是异步的

c++ - 减少线程或进程的 CPU 使用率

python - pyqt:如何从 QVBoxLayout 中删除元素?