我有一个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的格式丢失。
如何解码字符串以保留格式并使转义序列有效?
答案 0 :(得分: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;