From 5f9e6354e5cb1fad638d49066dc94d7b7af71648 Mon Sep 17 00:00:00 2001
From: Akira Ohgaki <akiraohgaki@gmail.com>
Date: Wed, 17 Aug 2016 12:44:19 +0900
Subject: [PATCH] Add utility/json class

---
 src/utility/json.cpp | 39 +++++++++++++++++++++++++++++++++++++++
 src/utility/json.h   | 22 ++++++++++++++++++++++
 2 files changed, 61 insertions(+)
 create mode 100644 src/utility/json.cpp
 create mode 100644 src/utility/json.h

diff --git a/src/utility/json.cpp b/src/utility/json.cpp
new file mode 100644
index 0000000..cbce058
--- /dev/null
+++ b/src/utility/json.cpp
@@ -0,0 +1,39 @@
+#include <QJsonDocument>
+#include <QJsonObject>
+#include <QJsonParseError>
+
+#include "json.h"
+
+namespace Utility {
+
+Json::Json(QObject *parent) : QObject(parent)
+{}
+
+bool Json::isValid(const QString &json)
+{
+    QJsonParseError jsonError;
+    QJsonDocument::fromJson(json.toUtf8(), &jsonError);
+    if (jsonError.error == QJsonParseError::NoError) {
+        return true;
+    }
+    return false;
+}
+
+QJsonObject Json::convertStrToObj(const QString &json)
+{
+    QJsonObject jsonObj;
+    QJsonParseError jsonError;
+    QJsonDocument jsonDoc = QJsonDocument::fromJson(json.toUtf8(), &jsonError);
+    if (jsonError.error == QJsonParseError::NoError && jsonDoc.isObject()) {
+        jsonObj = jsonDoc.object();
+    }
+    return jsonObj;
+}
+
+QString Json::convertObjToStr(const QJsonObject &jsonObj)
+{
+    QJsonDocument jsonDoc(jsonObj);
+    return QString::fromUtf8(jsonDoc.toJson());
+}
+
+} // namespace Utility
diff --git a/src/utility/json.h b/src/utility/json.h
new file mode 100644
index 0000000..68f100b
--- /dev/null
+++ b/src/utility/json.h
@@ -0,0 +1,22 @@
+#ifndef UTILITY_JSON_H
+#define UTILITY_JSON_H
+
+#include <QObject>
+
+namespace Utility {
+
+class Json : public QObject
+{
+    Q_OBJECT
+
+public:
+    explicit Json(QObject *parent = 0);
+
+    static bool isValid(const QString &json);
+    static QJsonObject convertStrToObj(const QString &json);
+    static QString convertObjToStr(const QJsonObject &jsonObj);
+};
+
+} // namespace Utility
+
+#endif // UTILITY_JSON_H
-- 
GitLab