JsonParser.hpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. // Copyright Benoit Blanchon 2014
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://github.com/bblanchon/ArduinoJson
  6. #pragma once
  7. #include "../JsonBuffer.hpp"
  8. #include "../JsonVariant.hpp"
  9. namespace ArduinoJson {
  10. namespace Internals {
  11. // Parse JSON string to create JsonArrays and JsonObjects
  12. // This internal class is not indended to be used directly.
  13. // Instead, use JsonBuffer.parseArray() or .parseObject()
  14. class JsonParser {
  15. public:
  16. JsonParser(JsonBuffer *buffer, char *json, uint8_t nestingLimit)
  17. : _buffer(buffer), _ptr(json), _nestingLimit(nestingLimit) {}
  18. JsonArray &parseArray();
  19. JsonObject &parseObject();
  20. private:
  21. bool skip(char charToSkip);
  22. bool skip(const char *wordToSkip);
  23. void skipSpaces();
  24. void parseAnythingTo(JsonVariant &destination);
  25. inline void parseBooleanTo(JsonVariant &destination);
  26. inline void parseNullTo(JsonVariant &destination);
  27. inline void parseNumberTo(JsonVariant &destination);
  28. inline const char *parseString();
  29. JsonBuffer *_buffer;
  30. char *_ptr;
  31. uint8_t _nestingLimit;
  32. };
  33. }
  34. }