Added deserialization from JSON file

This commit is contained in:
2025-02-07 20:05:44 +02:00
parent f9c394e0d1
commit 6d9586ac6e
5 changed files with 51 additions and 3 deletions

View File

@ -19,6 +19,8 @@ qt_add_qml_module(appProject-Orion
Main.qml
SOURCES user.h user.cpp
SOURCES userlist.h userlist.cpp
SOURCES serialization.h
SOURCES serialization.cpp
)
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.

View File

@ -0,0 +1,35 @@
#include "serialization.h"
#include <filesystem>
#include <QFile>
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
UserList&& loadUserList(const QString &file)
{
QFile doc{std::filesystem::path{file.toStdString()}};
QString fileContents = doc.readAll();
QJsonDocument document = QJsonDocument::fromJson(fileContents.toUtf8());
QJsonArray array = document.array();
QVector<User> container;
for (auto elem: array)
{
auto obj = elem.toObject();
User newUser{obj["name"].toString(), QDate::fromString(obj["date_of_birth"].toString()),
QDate::fromString(obj["date_of_death"].toString()), obj["default"].toBool()};
container.append(newUser);
}
UserList returnObj;
returnObj.setList(container);
return std::move(returnObj);
}
void saveUserList(const UserList &list)
{
}

View File

@ -0,0 +1,9 @@
#ifndef SERIALIZATION_H
#define SERIALIZATION_H
#include "userlist.h"
UserList &&loadUserList(const QString &file);
void saveUserList(const UserList &list);
#endif // SERIALIZATION_H

View File

@ -1,5 +1,5 @@
#include "user.h"
User::User(QString name, QDate dateOfBirth, QDate dateOfDeath, bool isItDefault)
: name{name}, dateOfBirth{dateOfBirth}, dateOfDeath{dateOfDeath}
: name{name}, dateOfBirth{dateOfBirth}, dateOfDeath{dateOfDeath}, isItDefault{isItDefault}
{}

View File

@ -1,11 +1,13 @@
#ifndef USERLIST_H
#define USERLIST_H
#include <QObject>
#include "user.h"
class UserList
#include <QObject>
class UserList: public QObject
{
Q_OBJECT
public:
UserList();