From 6f850b9e9e39501ab0a1c9526844e4c7d502ef75 Mon Sep 17 00:00:00 2001 From: anulax1225 Date: Thu, 6 Jun 2024 09:01:34 +0200 Subject: [PATCH] Added json parser module --- src/bakatools/json/json_node.cpp | 59 ++++++++++++++++++++++++++++++++ src/bakatools/json/json_node.h | 2 ++ 2 files changed, 61 insertions(+) diff --git a/src/bakatools/json/json_node.cpp b/src/bakatools/json/json_node.cpp index a9d3380..4ac1cae 100644 --- a/src/bakatools/json/json_node.cpp +++ b/src/bakatools/json/json_node.cpp @@ -1,6 +1,65 @@ #include "json_node.h" namespace Bk::Json { + std::string Node::to_string(int indent) { + std::string spaceString = std::string(indent, ' '); + std::string outputString = ""; + switch (type) { + case Type::STRING: + { + outputString += spaceString + *values.s; + break; + } + case Type::NUMBER: + { + outputString += spaceString + std::to_string(values.fValue); + break; + } + case Type::BOOLEAN: + { + outputString += spaceString + (values.bValue ? "true" : "false"); + break; + } + case Type::NULL_TYPE: + { + outputString += spaceString + "null"; + break; + } + case Type::LIST: + { + // std::cout << "["; + outputString += spaceString + "[\n"; + int index = 0; + for (auto node : (*values.list)) { + outputString += node->toString(indent + 1); + if (index < (*values.list).size() - 1) { + outputString += ",\n"; + } + index++; + } + outputString += "\n" + spaceString + "]\n"; + break; + } + case Type::OBJECT: + { + outputString += spaceString + "{\n"; + for (JSONObject::iterator i = (*values.object).begin(); i != (*values.object).end(); i++) + { + outputString += spaceString + " " + "\"" + i->first + "\"" + ": "; + outputString += i->second->toString(indent + 1); + JSONObject::iterator next = i; + next++; + if ((next) != (*values.object).end()) + { + outputString += ",\n"; + } + outputString += spaceString + "\n"; + } + outputString += spaceString + "}"; + } + } + return outputString; + } void Node::set_object(Object *object) { values.object = object; diff --git a/src/bakatools/json/json_node.h b/src/bakatools/json/json_node.h index 7223b71..36305c0 100644 --- a/src/bakatools/json/json_node.h +++ b/src/bakatools/json/json_node.h @@ -39,6 +39,8 @@ namespace Bk::Json void set_null(); bool is_null(); + std::string to_string(int indent = 3); + private: union Values { Object* object;