#ifndef JSONHELPER_H #define JSONHELPER_H #include <QJsonObject> #include <QJsonDocument> #include <QJsonParseError> #include <QJsonArray> #include <QVector> /* * QVector<QString> <-> QStringList */ QVector<QString> toQVector(const QStringList & qsl); QStringList toQStringList(const QVector<QString> & V); /* * Einfache Datentypen */ template<class T> void toJSON(QJsonObject & jsonObj, const QString &ParameterName, T value) { // C-b-R jsonObj[ParameterName] = value; } QJsonValue fromJSON(const QJsonObject & jsonObj, const QString &ParameterName); /* * Containers, e.g. QVector of class */ template<template <typename> class CONTAINER, typename T> void toJSON(QJsonObject & jsonObj, const QString &ParameterName, CONTAINER<T> V) { // C-b-R toJSON(jsonObj, ParameterName+".size", V.size()); for (int i=0; i<V.size(); i++) { V.at(i).toJSON(jsonObj, ParameterName+QString::number(i)); // toJSON(jsonObj, ParameterName+QString::number(i), V.at(i)); } } /* * Containers, e.g. QVector of standard types */ template<template <typename> class CONTAINER, typename T> void toJSONstd(QJsonObject & jsonObj, const QString &ParameterName, CONTAINER<T> V) { // C-b-R toJSON(jsonObj, ParameterName+".size", V.size()); for (int i=0; i<V.size(); i++) { // V.at(i).toJSON(jsonObj, ParameterName+QString::number(i)); toJSON(jsonObj, ParameterName+QString::number(i), V.at(i)); } } void toJSONtable(QJsonObject & jsonObj, const QString &ParameterName, const QVector<QStringList> &V); QVector<QString> fromJSONqstr(const QJsonObject & jsonObj, const QString &ParameterName); QVector<QStringList> fromJSONtable(const QJsonObject & jsonObj, const QString &ParameterName); /* * */ template<template <typename> class CONTAINER, typename T> CONTAINER<T> fromJSON(const QJsonObject & jsonObj, const QString &ParameterName) { int size = fromJSON(jsonObj, ParameterName+".size").toInt(); CONTAINER<T> V; for (int i=0; i<size; i++) V.push_back(T(jsonObj, ParameterName+QString::number(i))); return V; } #endif // JSONHELPER_H