diff options
| author | iwubcode <iwubcode@users.noreply.github.com> | 2024-05-31 22:36:12 -0500 |
|---|---|---|
| committer | iwubcode <iwubcode@users.noreply.github.com> | 2024-05-31 22:36:12 -0500 |
| commit | 1d4f758b14f26bb8d0344399d838faadcbfd8ab2 (patch) | |
| tree | 7bfee9f906caa8bddb7bf39864bc471817bb102b /Source/Core/Common/JsonUtil.cpp | |
| parent | 46a89936ae0724bf087a228133f4bd7bd682da3a (diff) | |
Common: add file serialization/deserialization functions for JSON
Diffstat (limited to 'Source/Core/Common/JsonUtil.cpp')
| -rw-r--r-- | Source/Core/Common/JsonUtil.cpp | 28 |
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(); +} |
