nested.cpp 1.7 KB

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