Starting to work on JSON reading.

This commit is contained in:
Andrzej Kapolka 2014-06-15 17:57:09 -07:00
parent 3ec127afde
commit 24ec441df7
2 changed files with 49 additions and 4 deletions

View file

@ -1877,6 +1877,49 @@ QJsonDocument JSONWriter::getDocument() const {
return QJsonDocument(top);
}
JSONReader::JSONReader(const QJsonDocument& document) {
QJsonObject top = document.object();
QJsonArray types = top.value("types").toArray();
for (int i = types.size() - 1; i >= 0; i--) {
QJsonObject type = types.at(i).toObject();
QString name = type.value("name").toString();
QString category = type.value("category").toString();
if (category == "ENUM") {
} else if (category == "STREAMABLE") {
} else if (category == "LIST") {
} else if (category == "SET") {
} else if (category == "MAP") {
}
}
QJsonArray classes = top.value("classes").toArray();
for (int i = classes.size() - 1; i >= 0; i--) {
QJsonObject clazz = classes.at(i).toObject();
QString name = clazz.value("name").toString();
QJsonArray properties = clazz.value("properties").toArray();
foreach (const QJsonValue& property, properties) {
QJsonObject object = property.toObject();
object.value("type");
object.value("name");
}
}
QJsonArray objects = top.value("objects").toArray();
for (int i = objects.size() - 1; i >= 0; i--) {
QJsonObject object = objects.at(i).toObject();
int id = object.value("id").toInt();
int originID = object.value("originID").toInt();
QJsonObject data = object.value("data").toObject();
}
}
ObjectStreamer::ObjectStreamer(const QMetaObject* metaObject) :
_metaObject(metaObject) {
}

View file

@ -866,14 +866,16 @@ template<class K, class V> inline QJsonValue JSONWriter::getData(const QHash<K,
class JSONReader {
public:
TypeStreamerPointer getTypeStreamer(const QByteArray& name) const { return _typeStreamers.value(name); }
ObjectStreamerPointer getObjectStreamer(const QByteArray& name) const { return _objectStreamers.value(name); }
JSONReader(const QJsonDocument& document);
TypeStreamerPointer getTypeStreamer(const QString& name) const { return _typeStreamers.value(name); }
ObjectStreamerPointer getObjectStreamer(const QString& name) const { return _objectStreamers.value(name); }
SharedObjectPointer getSharedObject(int id) const { return _sharedObjects.value(id); }
private:
QHash<QByteArray, TypeStreamerPointer> _typeStreamers;
QHash<QByteArray, ObjectStreamerPointer> _objectStreamers;
QHash<QString, TypeStreamerPointer> _typeStreamers;
QHash<QString, ObjectStreamerPointer> _objectStreamers;
QHash<int, SharedObjectPointer> _sharedObjects;
};