summaryrefslogtreecommitdiffstats
path: root/src/jsontools.h
blob: 18ec8e8d2530af30f7a0018567a74e3bfcd02bb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only

#include <stdexcept>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>

namespace JsonTools
{

struct NoChildFoundException: public std::runtime_error {
    NoChildFoundException(const QString &msg = {});
};

struct RestCallException: public std::runtime_error {
    RestCallException(const QString &msg = {});
};

QJsonObject getObject(const QString &key, const QJsonObject object);
QJsonArray getArray(const QString &key, const QJsonObject object);
QJsonValue getValue(const QString &key, const QJsonObject object);
QString getString(const QString &key, const QJsonObject object);
QStringList getStringList(const QString &key, const QJsonObject object, bool required = true);

void clearCache();
QString resolvedPath(const QString &figmaId);
bool resolvedHidden(const QString &figmaId);

QList<QJsonObject> findChildren(const QStringList &keyValueList, const QJsonObject &root);
QJsonObject findChild(const QStringList &keyValueList, const QJsonObject &root, bool warnOnDuplicates);
QJsonObject findNamedChild(const QStringList &namePath, const QJsonObject &root, bool warnOnDuplicates);
QJsonObject findChildWithKey(const QString &key, const QJsonObject &root);

bool modifyValue(const QString &figmaId, const QString &key, const QString& newValue, QJsonObject &root);

} // namespace