Time for action – implementing a JSON parser
Let's extend the PlayerInfoJSON
class and equip it with a reverse conversion:
PlayerInfo PlayerInfoJSON::readPlayerInfo(const QByteArray &ba) const { QJsonDocument doc = QJsonDocument::fromJson(ba); if(doc.isEmpty() || !doc.isArray()) return PlayerInfo(); return readPlayerInfo(doc.array()); }
First, we read the document and check whether it is valid and holds the expected array. Upon failure, an empty structure is returned; otherwise, readPlayerInfo
is called and is given QJsonArray
to work with:
PlayerInfo PlayerInfoJSON::readPlayerInfo(const QJsonArray &array) const { PlayerInfo pinfo; foreach(QJsonValue value, array) pinfo.players << readPlayer(value.toObject()); return pinfo; }
Since the array is iterable, ...
Get Game Programming Using Qt now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.