如何在QString中解析转义序列?

问题描述 投票:1回答:1

我有一个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"
    }

但如果我将它插入labellist并打印labellist,它会给出:

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

上述数组中QJsonvalues的格式将丢失。

如何解码字符串以保留格式并使转义序列有效?

c++ qt qstring qjson
1个回答
1
投票

我会使用来自Json()的QJsonDocument静态方法,如下所示:

  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;
© www.soinside.com 2019 - 2024. All rights reserved.