mirror of
https://github.com/Cockatrice/Cockatrice.git
synced 2026-01-27 07:14:19 -08:00
* CardDB: merge all card properties in a new structure * Pre Json parser changes * Cockatrice: use qt's builtin json support * Move qt-json src dir from cockatrice to oracle * Add dummy cockatricexml4 parser (yet to be implemented) * Implement a new parser and xml format * cockatricexml4: new xml parser following the "generic properties hash" pattern; * oracleimporter: refactor the parsing code to better adapt to cockatricexml4; rewrote split cards parsing * carddb: change "colors" from a stringlist to a string * carddb: move the getMainCardType() method to the cockatricexml3 parser * * CardInfo: show all properties (stil missing: nice name + translation) * Rework the "add related card" feature so that it doesn't change the card name in the carddb Also, fix token count display * Picture loader: Added support for transform cards * Fix side information for flip cards Mtgjson uses side a/b for flip cards, while scryfall doesn't * Pictureloader: dynamic tag resolution from card properties Examples old => new * !cardid! => !set:muid! * !uuid! => !set:uuid! * !collectornumber! => !set:num! New examples: * !prop:type! * !prop:manacost! * Start moving mtg-related property names to a specific file * Clangify * Fix tests * Make gcc an happy puppy * Revert "Make gcc an happy puppy" This reverts commit 446ec5f27516c4d3b32dbfc79557f4827c5c5bdf. * Some gcc fixes * Share set list between different db parsers, so they won't overwrite one each other * All glory to the hypnoclangifier! * Fix test compilation * Cleanup edited files in the prior PR. (#3519) * Cleanup edited files in the prior PR. Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com> * Fix includes Signed-off-by: Zach Halpern <ZaHalpern+github@gmail.com> * Update carddatabase.h
97 lines
2.7 KiB
Plaintext
97 lines
2.7 KiB
Plaintext
########################################################################
|
|
1. INTRODUCTION
|
|
|
|
The Json class is a simple class for parsing JSON data into a QVariant
|
|
hierarchies. Now, we can also reverse the process and serialize
|
|
QVariant hierarchies into valid JSON data.
|
|
|
|
|
|
########################################################################
|
|
2. HOW TO USE
|
|
|
|
The parser is really easy to use. Let's say we have the following
|
|
QString of JSON data:
|
|
|
|
------------------------------------------------------------------------
|
|
{
|
|
"encoding" : "UTF-8",
|
|
"plug-ins" : [
|
|
"python",
|
|
"c++",
|
|
"ruby"
|
|
],
|
|
"indent" : {
|
|
"length" : 3,
|
|
"use_space" : true
|
|
}
|
|
}
|
|
------------------------------------------------------------------------
|
|
|
|
We would first call the parse-method:
|
|
|
|
------------------------------------------------------------------------
|
|
//Say that we're using the QtJson namespace
|
|
using namespace QtJson;
|
|
bool ok;
|
|
//json is a QString containing the JSON data
|
|
QVariantMap result = Json::parse(json, ok).toMap();
|
|
|
|
if(!ok) {
|
|
qFatal("An error occurred during parsing");
|
|
exit(1);
|
|
}
|
|
------------------------------------------------------------------------
|
|
|
|
Assuming the parsing process completed without errors, we would then
|
|
go through the hierarchy:
|
|
|
|
------------------------------------------------------------------------
|
|
qDebug() << "encoding:" << result["encoding"].toString();
|
|
qDebug() << "plugins:";
|
|
|
|
foreach(QVariant plugin, result["plug-ins"].toList()) {
|
|
qDebug() << "\t-" << plugin.toString();
|
|
}
|
|
|
|
QVariantMap nestedMap = result["indent"].toMap();
|
|
qDebug() << "length:" << nestedMap["length"].toInt();
|
|
qDebug() << "use_space:" << nestedMap["use_space"].toBool();
|
|
------------------------------------------------------------------------
|
|
|
|
The previous code would print out the following:
|
|
|
|
------------------------------------------------------------------------
|
|
encoding: "UTF-8"
|
|
plugins:
|
|
- "python"
|
|
- "c++"
|
|
- "ruby"
|
|
length: 3
|
|
use_space: true
|
|
------------------------------------------------------------------------
|
|
|
|
To write JSON data from Qt object is as simple as parsing:
|
|
|
|
------------------------------------------------------------------------
|
|
QVariantMap map;
|
|
map["name"] = "Name";
|
|
map["age"] = 22;
|
|
|
|
QByteArray data = Json::serialize(map);
|
|
------------------------------------------------------------------------
|
|
|
|
The byte array 'data' contains valid JSON data:
|
|
|
|
------------------------------------------------------------------------
|
|
{
|
|
name: "Luis Gustavo",
|
|
age: 22,
|
|
}
|
|
------------------------------------------------------------------------
|
|
|
|
|
|
########################################################################
|
|
4. CONTRIBUTING
|
|
|
|
The code is available to download at GitHub. Contribute if you dare!
|