qjson解析和构建

    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




猜你喜欢

转载自blog.csdn.net/u013077314/article/details/51193301