78 int GetInt()
const {
return static_cast<int>(number); }
84 const std::string&
GetString()
const {
return str; }
119 result.reserve(input.size());
120 bool inQuotes =
false;
121 bool escaped =
false;
122 for (
char current : input) {
127 }
else if (current ==
'\\') {
129 }
else if (current ==
'"') {
132 }
else if (current ==
'"') {
135 }
else if (!std::isspace(
static_cast<unsigned char>(current))) {
145 result.reserve(input.size());
146 for (
char current : input) {
164 if (
static_cast<unsigned char>(current) < 0x20) {
166 std::snprintf(buffer,
sizeof(buffer),
"\\u%04x",
167 static_cast<unsigned char>(current));
186 bool inQuotes =
false;
188 for (
size_t i = 0; i < input.size(); ++i) {
189 char current = input[i];
198 result += std::string(indentLevel * 4,
' ');
207 result += std::string(indentLevel * 4,
' ');
216 result += std::string(indentLevel * 4,
' ');
222 if (!inQuotes) result +=
" ";
228 size_t backslashes = 0;
229 for (
size_t j = i; j > 0 && input[j - 1] ==
'\\'; --j) {
232 if (backslashes % 2 == 0) {
233 inQuotes = !inQuotes;
248 void SkipWhitespace();
264 void WriteJsonValue(std::ofstream& outputFile,
JsonValue jsonValue);
266 void PrintJsonValue(std::ostream& outputFile,
JsonValue jsonValue);
268 void Indent(std::ostream& outputFile,
int level);
270 void Indent(std::ofstream& outputFile,
int level);
Definition fims_json.hpp:107
void Show(JsonValue jsonValue)
Definition fims_json.cpp:340
void WriteToFile(const std::string &filename, JsonValue jsonValue)
Definition fims_json.cpp:268
static std::string PrettyFormatJSON(const std::string &json)
Formats a JSON string.
Definition fims_json.hpp:182
JsonValue Parse(const std::string &json)
Definition fims_json.cpp:19
static std::string removeWhitespace(const std::string &input)
Definition fims_json.hpp:117
static std::string EscapeString(const std::string &input)
Definition fims_json.hpp:143
Definition fims_json.hpp:51
JsonValue(bool b)
Definition fims_json.hpp:66
JsonValue()
Definition fims_json.hpp:54
JsonValue(const JsonArray &arr)
Definition fims_json.hpp:72
double GetDouble() const
Definition fims_json.hpp:81
JsonArray & GetArray()
Definition fims_json.hpp:93
const std::string & GetString() const
Definition fims_json.hpp:84
JsonValue(const JsonObject &obj)
Definition fims_json.hpp:69
JsonValue(double num)
Definition fims_json.hpp:60
int GetInt() const
Definition fims_json.hpp:78
JsonObject & GetObject()
Definition fims_json.hpp:90
bool GetBool() const
Definition fims_json.hpp:87
JsonValue(const std::string &str)
Definition fims_json.hpp:63
JsonValueType GetType() const
Definition fims_json.hpp:75
JsonValue(int num)
Definition fims_json.hpp:57
std::vector< JsonValue > JsonArray
Definition fims_json.hpp:34
JsonValueType
Definition fims_json.hpp:39
@ Bool
Definition fims_json.hpp:43
@ Number
Definition fims_json.hpp:41
@ String
Definition fims_json.hpp:42
@ Object
Definition fims_json.hpp:44
@ Null
Definition fims_json.hpp:40
@ JArray
Definition fims_json.hpp:45
std::map< std::string, JsonValue > JsonObject
Definition fims_json.hpp:29