У меня есть QString, что мне нужно вставить его в QJsonArray. Проблема в том, что строка вставляется как есть, а escape-последовательности не работают.
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}"])
Формат значений QJson в указанном массиве потерян.
Как декодировать строку, чтобы сохранить формат и заставить работать escape-последовательности?
я хотел бы использовать 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;
Других решений пока нет …