QJsonArray npcArray = json["npcs"].toArray();
for (int npcIndex = 0; npcIndex < npcArray.size(); ++npcIndex) {
QJsonObject npcObject = npcArray[npcIndex].toObject();
Character npc;
npc.read(npcObject);
mNpcs.append(npc);
}
}
void Level::write(QJsonObject &json) const
{
QJsonArray npcArray;
foreach (const Character npc, mNpcs) {
QJsonObject npcObject;
npc.write(npcObject);
npcArray.append(npcObject);
}
json["npcs"] = npcArray;
}
解析的主要步骤如下:
1,将来源数据转化为JsonDocument。可用它的构造函数,或setArray、setObject,或它的静态成员函数。
QByteArray b= file->readAll();
QJsonParseError *error=new QJsonParseError;
QJsonDocument doc=QJsonDocument::fromJson(b,error);
if(error->error==QJsonParseError::NoError)
{
if(doc.isObject())
{
QJsonObject obj=doc.object();//取得最外层这个大对象
//这里放代码,对json数据进行取值
}
}else
{
qDebug()<<error->errorString();
}
2,可用下列四函数判断它的最外层数据类型(一般是个对象):
bool isArray() const
bool isEmpty() const
bool isNull() const
bool isObject() const
3,知道类型后,用以下函数将它转化为json对象或json数组或Map
QJsonArray array() const
QJsonObject object() const
QVariant toVariant() const
for (int npcIndex = 0; npcIndex < npcArray.size(); ++npcIndex) {
QJsonObject npcObject = npcArray[npcIndex].toObject();
Character npc;
npc.read(npcObject);
mNpcs.append(npc);
}
}
void Level::write(QJsonObject &json) const
{
QJsonArray npcArray;
foreach (const Character npc, mNpcs) {
QJsonObject npcObject;
npc.write(npcObject);
npcArray.append(npcObject);
}
json["npcs"] = npcArray;
}
解析的主要步骤如下:
1,将来源数据转化为JsonDocument。可用它的构造函数,或setArray、setObject,或它的静态成员函数。
QByteArray b= file->readAll();
QJsonParseError *error=new QJsonParseError;
QJsonDocument doc=QJsonDocument::fromJson(b,error);
if(error->error==QJsonParseError::NoError)
{
if(doc.isObject())
{
QJsonObject obj=doc.object();//取得最外层这个大对象
//这里放代码,对json数据进行取值
}
}else
{
qDebug()<<error->errorString();
}
2,可用下列四函数判断它的最外层数据类型(一般是个对象):
bool isArray() const
bool isEmpty() const
bool isNull() const
bool isObject() const
3,知道类型后,用以下函数将它转化为json对象或json数组或Map
QJsonArray array() const
QJsonObject object() const
QVariant toVariant() const