您应该在版本 >= 5.X 的 QtCore 中使用 json 支持。您可以使用以下代码执行此操作:
json.txt
{
"success": 1,
"return": {
"343152": {
"pair": "usd_eur",
"type": "sell",
"amount": 1.00000000,
"rate": 3.00000000,
"timestamp_created": 1342448420,
"status": 0
},
"343157": {
"pair": "usd_eur",
"type": "sell",
"amount ":1.00000000,
"rate": 3.00000000,
"timestamp_created": 1342448420,
"status": 0
}
}
}
主文件
#include <QJsonParseError>
#include <QJsonDocument>
#include <QJsonObject>
#include <QByteArray>
#include <QStringList>
#include <QDebug>
#include <QFile>
int main()
{
QFile file("json.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "File open error:" << file.errorString();
return 1;
}
QByteArray jsonByteArray = file.readAll();
file.close();
QJsonParseError jsonParseError;
QJsonDocument jsonDocument = QJsonDocument::fromJson(jsonByteArray, &jsonParseError);
if (jsonParseError.error != QJsonParseError::NoError) {
qDebug() << "Error happened:" << jsonParseError.errorString();
return 1;
}
if (!jsonDocument.isObject()) {
qDebug() << "The json data is not an object";
return 1;
}
QJsonObject mainJsonObject(jsonDocument.object());
QJsonValue returnJsonValue = mainJsonObject.value(QStringLiteral("return"));
if (!returnJsonValue.isObject()) {
qDebug() << "The json data is not an object";
return 1;
}
qDebug() << "KEYS WANTED:" << returnJsonValue.toObject().keys();
return 0;
}
输出
g++ -Wall -fPIC -I/usr/include/qt -I/usr/include/qt/QtCore -I/usr/include -lQt5Core main.cpp && ./a.out
KEYS WANTED: ("343152", "343157")