|
1 | 1 | #include "JsonHandler.h" |
2 | 2 |
|
3 | | -#include "rapidjson/reader.h" |
4 | | -#include "rapidjson/stringbuffer.h" |
5 | | -#include "rapidjson/document.h" |
6 | | -#include "rapidjson/error/en.h" |
7 | | - |
8 | | -JsonHandler::JsonHandler(const ParseOptions& options) |
9 | | - : m_parseOptions(options) |
10 | | -{ |
11 | | -} |
12 | | - |
13 | | -auto JsonHandler::GetCompressedJson(const std::string& jsonText)-> const Result |
| 3 | +JsonHandler::JsonHandler(const ParseOptions &options) |
| 4 | + : m_parseOptions(options) |
14 | 5 | { |
15 | | - return ParseJson(jsonText); |
16 | 6 | } |
17 | 7 |
|
18 | | -auto JsonHandler::FormatJson(const std::string& jsonText, LE le, LF lf, char indentChar, unsigned indentLen)-> const Result |
| 8 | +auto JsonHandler::GetCompressedJson(const std::string &jsonText) -> const Result |
19 | 9 | { |
20 | | - Result retVal{}; |
21 | | - |
22 | | - rapidjson::StringBuffer sb; |
23 | | - rapidjson::PrettyWriter<rapidjson::StringBuffer> pw(sb); |
24 | | - rapidjson::StringStream ss(jsonText.c_str()); |
25 | | - rapidjson::Reader reader; |
26 | | - |
27 | | - pw.SetLineEnding(le); |
28 | | - pw.SetFormatOptions(lf); |
29 | | - pw.SetIndent(indentChar, indentLen); |
| 10 | + rapidjson::StringBuffer sb; |
| 11 | + rapidjson::Writer<rapidjson::StringBuffer> handler(sb); |
30 | 12 |
|
31 | | - if (reader.Parse<rapidjson::kParseFullPrecisionFlag | rapidjson::kParseCommentsFlag | |
32 | | - rapidjson::kParseEscapedApostropheFlag | rapidjson::kParseNanAndInfFlag | rapidjson::kParseTrailingCommasFlag>(ss, pw) |
33 | | - && sb.GetString()) |
34 | | - { |
35 | | - retVal.success = true; |
36 | | - retVal.response = sb.GetString(); |
37 | | - retVal.error_str.clear(); |
38 | | - retVal.error_code = retVal.error_pos = -1; |
39 | | - } |
40 | | - else |
41 | | - { |
42 | | - retVal.success = false; |
43 | | - retVal.response.clear(); |
44 | | - retVal.error_str = rapidjson::GetParseError_En(reader.GetParseErrorCode()); |
45 | | - retVal.error_pos = static_cast<int>(reader.GetErrorOffset()); |
46 | | - retVal.error_code = reader.GetParseErrorCode(); |
47 | | - } |
48 | | - |
49 | | - return retVal; |
| 13 | + return ParseJson(jsonText, sb, handler); |
50 | 14 | } |
51 | 15 |
|
52 | | - |
53 | | -auto JsonHandler::ValidateJson(const std::string& jsonText)-> const Result |
| 16 | +auto JsonHandler::FormatJson(const std::string &jsonText, LE le, LF lf, char indentChar, unsigned indentLen) -> const Result |
54 | 17 | { |
55 | | - return ParseJson(jsonText); |
| 18 | + rapidjson::StringBuffer sb; |
| 19 | + rapidjson::PrettyWriter<rapidjson::StringBuffer> handler(sb); |
| 20 | + handler.SetLineEnding(le); |
| 21 | + handler.SetFormatOptions(lf); |
| 22 | + handler.SetIndent(indentChar, indentLen); |
| 23 | + |
| 24 | + return ParseJson(jsonText, sb, handler); |
56 | 25 | } |
57 | 26 |
|
58 | | -auto JsonHandler::ParseJson(const std::string& jsonText) -> const Result |
| 27 | +auto JsonHandler::ValidateJson(const std::string &jsonText) -> const Result |
59 | 28 | { |
60 | | - Result retVal{}; |
| 29 | + rapidjson::StringBuffer sb; |
| 30 | + rapidjson::Writer<rapidjson::StringBuffer> handler(sb); |
61 | 31 |
|
62 | | - rapidjson::StringBuffer sb; |
63 | | - rapidjson::Writer<rapidjson::StringBuffer> pw(sb); |
64 | | - rapidjson::StringStream ss(jsonText.c_str()); |
65 | | - rapidjson::Reader reader; |
66 | | - |
67 | | - if (reader.Parse<rapidjson::kParseFullPrecisionFlag | rapidjson::kParseCommentsFlag | |
68 | | - rapidjson::kParseEscapedApostropheFlag | rapidjson::kParseNanAndInfFlag | rapidjson::kParseTrailingCommasFlag>(ss, pw) |
69 | | - && sb.GetString()) |
70 | | - { |
71 | | - retVal.success = true; |
72 | | - retVal.response = sb.GetString(); |
73 | | - retVal.error_str.clear(); |
74 | | - retVal.error_code = retVal.error_pos = -1; |
75 | | - } |
76 | | - else |
77 | | - { |
78 | | - retVal.success = false; |
79 | | - retVal.response.clear(); |
80 | | - retVal.error_str = rapidjson::GetParseError_En(reader.GetParseErrorCode()); |
81 | | - retVal.error_pos = static_cast<int>(reader.GetErrorOffset()); |
82 | | - retVal.error_code = reader.GetParseErrorCode(); |
83 | | - } |
84 | | - |
85 | | - return retVal; |
| 32 | + return ParseJson(jsonText, sb, handler); |
86 | 33 | } |
87 | | - |
0 commit comments