JsonParser.h 833 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * malloc-free JSON parser for Arduino
  3. * Benoit Blanchon 2014 - MIT License
  4. */
  5. #ifndef __JSONPARSER_H
  6. #define __JSONPARSER_H
  7. #include "JsonHashTable.h"
  8. #include "JsonArray.h"
  9. template <int SIZE> // SIZE of the parser in bytes (128, 256 or more are recommended)
  10. class JsonParser
  11. {
  12. public:
  13. JsonArray parseArray(char* json)
  14. {
  15. return JsonArray(json, parse(json));
  16. }
  17. JsonHashTable parseHashTable(char* json)
  18. {
  19. return JsonHashTable(json, parse(json));
  20. }
  21. private:
  22. jsmntok_t* parse(char* json)
  23. {
  24. jsmn_parser parser;
  25. jsmn_init(&parser);
  26. jsmntok_t* tokens = (jsmntok_t*) buffer;
  27. int maxTokenCount = SIZE / sizeof(jsmntok_t);
  28. if (JSMN_SUCCESS != jsmn_parse(&parser, json, tokens, maxTokenCount))
  29. return 0;
  30. return tokens;
  31. }
  32. char buffer[SIZE];
  33. };
  34. #endif