gogo000
gogo000

Reputation: 513

How to convert a QJsonObject to QString

I have a QJsonObject data and want to convert to QString. How can I do this? Searched for help in Qt, it only can convert QJsonObject to QVariantMap...

Thanks in advance.

Upvotes: 49

Views: 68284

Answers (4)

Rahul Das
Rahul Das

Reputation: 124

Or

QJsonDocument doc; ... doc.toVariant().toString();

Upvotes: 0

SayAz
SayAz

Reputation: 760

we can do this in one line

QString strFromObj = QJsonDocument(jsonObject).toJson(QJsonDocument::Compact).toStdString().c_str();

Upvotes: 6

jaques-sam
jaques-sam

Reputation: 2795

When the macro QT_NO_CAST_FROM_ASCII is enabled, you can do something like:

QJsonDocument doc(jsonObject);
QByteArray docByteArray = doc.toJson(QJsonDocument::Compact);
QTextCodec *codec = QTextCodec::codecForName("UTF-8");
Qstring strJson = codec->toUnicode(docByteArray);

Or better, just use QLatin1String(QByteArray&), based on the example of TheDarkKnight:

QJsonDocument doc(jsonObj);
QByteArray docByteArray = doc.toJson(QJsonDocument::Compact);
Qstring strJson = QLatin1String(docByteArray);

Upvotes: 0

TheDarkKnight
TheDarkKnight

Reputation: 27611

Remembering when I first needed to do this, the documentation can be a bit lacking and assumes you have knowledge of other QJson classes.

To obtain a QString of a QJsonObject, you need to use the QJsonDocument class, like this: -

QJsonObject jsonObj; // assume this has been populated with Json data

QJsonDocument doc(jsonObj);
QString strJson(doc.toJson(QJsonDocument::Compact));

Upvotes: 106

Related Questions