LINUX.ORG.RU

Как изменить QJsonObject ?

 ,


0

2

Есть шаблон:

{
	"param1": {
		"count": 40,

	},
	"param2": {
		"value": 50
	}
}

Нужно править числа в нем. Пробую так:

jsonObject.insert("count",11);
    jsonObject.insert("value",22);

Но так не работает. Как правильно вложенные параметры менять.



Последнее исправление: dibr0v72 (всего исправлений: 1)

Попробуй как-нибудь так: https://stackoverflow.com/a/54232654

Где-то читал, что QJson из QtCore изначально был лишь для парсинга и возможность модификации дерева завезли много позже.

EXL ★★★★★
()

Не работал с Json через Qt, но могу сказать, что в библиотеке BsonCXX (она из состава MongoCXX) вполне себе удобно работать с Json.

rumgot ★★★★★
()

Я написал для этого пару методов просто:

void updatePath(QJsonObject& object, const QStringList& keys,
                         std::function<void(QJsonValueRef)> transformer) {
  Q_ASSERT(keys.length());

  QJsonValueRef valueRef = object[keys.first()];

  if (keys.length() == 1) {
    transformer(valueRef);
  } else {
    QJsonObject innerObject = valueRef.toObject();

    updatePath(innerObject, keys.mid(1), transformer);

    valueRef = innerObject;
  }
}

void setPath(QJsonObject& object, const QStringList& keys,
                      const QJsonValue& value) {
  updatePath(object, keys, [value](QJsonValueRef v) { v = value; });
}

Тогда можно написать так:

setPath(jsonObject, {"param1", "count"}, 11)

unC0Rr ★★★★★
()
Последнее исправление: unC0Rr (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.