nested.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. // Copyright Benoit Blanchon 2014-2017
  2. // MIT License
  3. //
  4. // Arduino JSON library
  5. // https://bblanchon.github.io/ArduinoJson/
  6. // If you like this project, please add a star!
  7. #include <ArduinoJson.h>
  8. #include <catch.hpp>
  9. TEST_CASE("JsonBuffer nested objects") {
  10. SECTION("ArrayNestedInObject") {
  11. DynamicJsonBuffer jsonBuffer;
  12. char jsonString[] = " { \"ab\" : [ 1 , 2 ] , \"cd\" : [ 3 , 4 ] } ";
  13. JsonObject &object = jsonBuffer.parseObject(jsonString);
  14. JsonArray &array1 = object["ab"];
  15. const JsonArray &array2 = object["cd"];
  16. JsonArray &array3 = object["ef"];
  17. REQUIRE(true == object.success());
  18. REQUIRE(true == array1.success());
  19. REQUIRE(true == array2.success());
  20. REQUIRE(false == array3.success());
  21. REQUIRE(2 == array1.size());
  22. REQUIRE(2 == array2.size());
  23. REQUIRE(0 == array3.size());
  24. REQUIRE(1 == array1[0].as<int>());
  25. REQUIRE(2 == array1[1].as<int>());
  26. REQUIRE(3 == array2[0].as<int>());
  27. REQUIRE(4 == array2[1].as<int>());
  28. REQUIRE(0 == array3[0].as<int>());
  29. }
  30. SECTION("ObjectNestedInArray") {
  31. DynamicJsonBuffer jsonBuffer;
  32. char jsonString[] =
  33. " [ { \"a\" : 1 , \"b\" : 2 } , { \"c\" : 3 , \"d\" : 4 } ] ";
  34. JsonArray &array = jsonBuffer.parseArray(jsonString);
  35. JsonObject &object1 = array[0];
  36. const JsonObject &object2 = array[1];
  37. JsonObject &object3 = array[2];
  38. REQUIRE(true == array.success());
  39. REQUIRE(true == object1.success());
  40. REQUIRE(true == object2.success());
  41. REQUIRE(false == object3.success());
  42. REQUIRE(2 == object1.size());
  43. REQUIRE(2 == object2.size());
  44. REQUIRE(0 == object3.size());
  45. REQUIRE(1 == object1["a"].as<int>());
  46. REQUIRE(2 == object1["b"].as<int>());
  47. REQUIRE(3 == object2["c"].as<int>());
  48. REQUIRE(4 == object2["d"].as<int>());
  49. REQUIRE(0 == object3["e"].as<int>());
  50. }
  51. }