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