QVariant, который я взял из C ++, содержит QJsonDocument, и я хочу преобразовать его в js объект, но я только нашел использование QJsonDocument в C ++. Я не смог найти, как использовать QJsonDocument в qml.
Например:
Qml:
function qmlUpdateObject( Object ){
console.log(Object);
}
// console content: qml: QVariant(QJsonDocument, QJsonDocument({"appDesc":{"description":"SomeDescription","message":"SomeMessage"},"appName":{"description":"Home","imp":["awesome","best","good"],"message":"Welcome"}}))
// I want to get a js object: {"appDesc":{"description":"SomeDescription","message":"SomeMessage"},"appName":{"description":"Home","imp":["awesome","best","good"],"message":"Welcome"}}
C ++:
QObject::connect( this, SIGNAL( updateData(QVariant)),
viewItem, SLOT( qmlUpdateObject(QVariant)) );
void Controller::setData(QString name)
{
QFile file("data.json");
QJsonDocument d = QJsonDocument::fromJson(file.readAll());
QByteArray dataJson = d.toJson(QJsonDocument::Compact);
emit updateData(dataJson);
}
ОБНОВЛЕНИЕ Добавьте эту строку и вернитесь назад, qml может успешно проанализировать:
QByteArray dataJson = d.toJson(QJsonDocument::Compact);