summaryrefslogtreecommitdiff
path: root/Source/Core/Common/JsonUtil.cpp
diff options
context:
space:
mode:
authoriwubcode <iwubcode@users.noreply.github.com>2024-05-31 22:36:12 -0500
committeriwubcode <iwubcode@users.noreply.github.com>2024-05-31 22:36:12 -0500
commit1d4f758b14f26bb8d0344399d838faadcbfd8ab2 (patch)
tree7bfee9f906caa8bddb7bf39864bc471817bb102b /Source/Core/Common/JsonUtil.cpp
parent46a89936ae0724bf087a228133f4bd7bd682da3a (diff)
Common: add file serialization/deserialization functions for JSON
Diffstat (limited to 'Source/Core/Common/JsonUtil.cpp')
-rw-r--r--Source/Core/Common/JsonUtil.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/Source/Core/Common/JsonUtil.cpp b/Source/Core/Common/JsonUtil.cpp
index 3e842c5c18..fa9b8a73c9 100644
--- a/Source/Core/Common/JsonUtil.cpp
+++ b/Source/Core/Common/JsonUtil.cpp
@@ -3,6 +3,10 @@
#include "Common/JsonUtil.h"
+#include <fstream>
+
+#include "Common/FileUtil.h"
+
picojson::object ToJsonObject(const Common::Vec3& vec)
{
picojson::object obj;
@@ -38,3 +42,27 @@ std::optional<bool> ReadBoolFromJson(const picojson::object& obj, const std::str
return std::nullopt;
return it->second.get<bool>();
}
+
+bool JsonToFile(const std::string& filename, const picojson::value& root, bool prettify)
+{
+ std::ofstream json_stream;
+ File::OpenFStream(json_stream, filename, std::ios_base::out);
+ if (!json_stream.is_open())
+ {
+ return false;
+ }
+ json_stream << root.serialize(prettify);
+ return true;
+}
+
+bool JsonFromFile(const std::string& filename, picojson::value* root, std::string* error)
+{
+ std::string json_data;
+ if (!File::ReadFileToString(filename, json_data))
+ {
+ return false;
+ }
+
+ *error = picojson::parse(*root, json_data);
+ return error->empty();
+}