【问题标题】:How to parse escape sequences in QString?如何解析 QString 中的转义序列?
【发布时间】:2017-11-02 17:33:02
【问题描述】:

我有一个 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的格式丢失了。

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

【问题讨论】:

  • 为什么要插入格式化字符?你不需要这样做。这就是为什么QJson* 类是为。他们为你做。

标签: c++ qt qstring qjson


【解决方案1】:

我会使用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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多