JsonValue.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Arduino JSON library
  3. * Benoit Blanchon 2014 - MIT License
  4. */
  5. #include <stdlib.h> // for strtol, strtod
  6. #include "JsonArray.h"
  7. #include "JsonHashTable.h"
  8. #include "JsonValue.h"
  9. using namespace ArduinoJson::Parser;
  10. JsonValue::operator bool()
  11. {
  12. if (token == 0 || token->type != JSMN_PRIMITIVE) return 0;
  13. // "true"
  14. if (json[token->start] == 't') return true;
  15. // "false"
  16. if (json[token->start] == 'f') return false;
  17. // "null"
  18. if (json[token->start] == 'n') return false;
  19. // number
  20. return strtol(json + token->start, 0, 0) != 0;
  21. }
  22. JsonValue::operator double()
  23. {
  24. if (token == 0 || token->type != JSMN_PRIMITIVE) return 0;
  25. return strtod(json + token->start, 0);
  26. }
  27. JsonValue::operator long()
  28. {
  29. if (token == 0 || token->type != JSMN_PRIMITIVE) return 0;
  30. return strtol(json + token->start, 0, 0);
  31. }
  32. JsonValue::operator char*()
  33. {
  34. if (token == 0 || token->type != JSMN_PRIMITIVE && token->type != JSMN_STRING)
  35. return 0;
  36. // add null terminator to the string
  37. json[token->end] = 0;
  38. return json + token->start;
  39. }
  40. JsonValue::operator JsonArray()
  41. {
  42. return JsonArray(json, token);
  43. }
  44. JsonValue::operator JsonHashTable()
  45. {
  46. return JsonHashTable(json, token);
  47. }