JsonArray.cpp 916 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. /*
  2. * malloc-free JSON parser for Arduino
  3. * Benoit Blanchon 2014
  4. * MIT License
  5. */
  6. #include "JsonArray.h"
  7. #include "JsonHashTable.h"
  8. jsmntok_t* JsonArray::getToken(int index)
  9. {
  10. if (json == 0 || tokens == 0 || index < 0 || index >= tokens[0].size)
  11. return 0;
  12. // skip first token, it's the whole object
  13. int currentToken = 1;
  14. for (int i = 0; i < index; i++)
  15. {
  16. // move forward: current + nested tokens
  17. currentToken += 1 + getNestedTokenCounts(currentToken);
  18. }
  19. return &tokens[currentToken];
  20. }
  21. JsonArray JsonArray::getArray(int index)
  22. {
  23. jsmntok_t* token = getToken(index);
  24. return JsonArray(json, token);
  25. }
  26. JsonHashTable JsonArray::getHashTable(int index)
  27. {
  28. jsmntok_t* token = getToken(index);
  29. return JsonHashTable(json, token);
  30. }
  31. char* JsonArray::getString(int index)
  32. {
  33. jsmntok_t* token = getToken(index);
  34. return token != 0 ? json + token->start : 0;
  35. }