私はQtに非常に慣れていないので、実行したい操作が非常に簡単です。次のJSonObjectを取得する必要があります。
{
"Record1" : "830957 ",
"Properties" :
[{
"Corporate ID" : "3859043 ",
"Name" : "John Doe ",
"Function" : "Power Speaker ",
"Bonus Points" : ["10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56", "10 ", "45", "56 ", "34", "56 ", "10", "45 ", "56", "34 ", "56", "45"]
}
]
}
JSonはこの構文および有効性チェッカー http://jsonformatter.curiousconcept.com/ でチェックされ、有効であることがわかりました。
そのためにStringのQJsonValue初期化を使用し、それをQJSonObjectに変換しました。
QJsonObject ObjectFromString(const QString& in)
{
QJsonValue val(in);
return val.toObject();
}
ファイルから貼り付けたJSonをロードしています:
QString path = "C:/Temp";
QFile *file = new QFile(path + "/" + "Input.txt");
file->open(QIODevice::ReadOnly | QFile::Text);
QTextStream in(file);
QString text = in.readAll();
file->close();
qDebug() << text;
QJsonObject obj = ObjectFromString(text);
qDebug() <<obj;
これが機能していないため、これを行うための良い方法が最も確かにあり、役立つ例は見つかりませんでした
QJsonDocument :: fromJson を使用します
QString data; // assume this holds the json string
QJsonDocument doc = QJsonDocument::fromJson(data.toUtf8());
QJsonObject ...が必要な場合.
QJsonObject ObjectFromString(const QString& in)
{
QJsonObject obj;
QJsonDocument doc = QJsonDocument::fromJson(in.toUtf8());
// check validity of the document
if(!doc.isNull())
{
if(doc.isObject())
{
obj = doc.object();
}
else
{
qDebug() << "Document is not an object" << endl;
}
}
else
{
qDebug() << "Invalid JSON...\n" << in << endl;
}
return obj;
}
この手順に従う必要があります
QString str = "{\"name\" : \"John\" }";
QByteArray br = str.toUtf8();
QJsonDocument doc = QJsonDocument::fromJson(br);
QJsonObject obj = doc.object();
QString name = obj["name"].toString();
qDebug() << name;