33 #include <unordered_map>
47 JsonValue(
const std::string &_value, JsonType _type) :
57 , valueBegin(SIZE_MAX)
59 , type(microjson::JsonInvalidType){}
65 microjson::JsonType type;
67 size_t nameSize()
const {
68 return nameEnd - nameBegin;
71 size_t valueSize()
const {
72 return valueEnd - valueBegin + 1;
75 bool checkValue()
const {
76 return type != microjson::JsonInvalidType && valueBegin != SIZE_MAX && valueEnd != SIZE_MAX;
79 bool checkEof()
const {
80 return (type == microjson::JsonNumberType || type == microjson::JsonBoolType) &&
81 valueBegin != SIZE_MAX && valueEnd == SIZE_MAX;
85 return checkValue() && nameBegin != SIZE_MAX && nameEnd != SIZE_MAX &&
86 nameBegin < nameEnd && nameEnd < valueBegin;
90 using JsonObject = std::unordered_map<std::string, JsonValue>;
91 using JsonArray = std::vector<JsonValue>;
93 extern JsonArray parseJsonArray(
const char *buffer,
size_t size);
94 extern JsonObject parseJsonObject(
const char *buffer,
size_t size);
96 inline bool skipWhiteSpace(
const char byte) {
97 return byte ==
'\n' ||
byte ==
' ' ||
byte ==
'\r' ||
byte ==
'\t' ||
byte ==
'\f' ||
byte ==
'\v';
100 extern bool extractValue(
const char *buffer,
size_t size,
size_t &i,
const char expectedEndByte,
microjson::JsonProperty &property);
101 extern bool extractProperty(
const char *buffer,
size_t size,
size_t &i,
const char expectedEndByte,
microjson::JsonProperty &property);
Definition: microjson.h:54
Definition: microjson.h:45