forked from bblanchon/ArduinoJson
Fixed serializeJson(obj[key], dst)
(closes #794)
This commit is contained in:
@ -6,6 +6,7 @@ HEAD
|
|||||||
|
|
||||||
* Implemented reference semantics for `JsonVariant`
|
* Implemented reference semantics for `JsonVariant`
|
||||||
* Replace `JsonPair`'s `key` and `value` with `key()` and `value()`
|
* Replace `JsonPair`'s `key` and `value` with `key()` and `value()`
|
||||||
|
* Fixed `serializeJson(obj[key], dst)` (issue #794)
|
||||||
|
|
||||||
> ### BREAKING CHANGES
|
> ### BREAKING CHANGES
|
||||||
>
|
>
|
||||||
|
@ -91,7 +91,7 @@ class JsonSerializer {
|
|||||||
} // namespace Internals
|
} // namespace Internals
|
||||||
|
|
||||||
template <typename TSource, typename TDestination>
|
template <typename TSource, typename TDestination>
|
||||||
size_t serializeJson(TSource &source, TDestination &destination) {
|
size_t serializeJson(const TSource &source, TDestination &destination) {
|
||||||
using namespace Internals;
|
using namespace Internals;
|
||||||
return serialize<JsonSerializer>(source, destination);
|
return serialize<JsonSerializer>(source, destination);
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ add_executable(JsonSerializerTests
|
|||||||
JsonObject.cpp
|
JsonObject.cpp
|
||||||
JsonObjectPretty.cpp
|
JsonObjectPretty.cpp
|
||||||
JsonVariant.cpp
|
JsonVariant.cpp
|
||||||
|
misc.cpp
|
||||||
std_stream.cpp
|
std_stream.cpp
|
||||||
std_string.cpp
|
std_string.cpp
|
||||||
)
|
)
|
||||||
|
46
test/JsonSerializer/misc.cpp
Normal file
46
test/JsonSerializer/misc.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include <catch.hpp>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void check(T value, const std::string &expected) {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
doc.to<JsonVariant>().set(value);
|
||||||
|
char buffer[256] = "";
|
||||||
|
size_t returnValue = serializeJson(doc, buffer, sizeof(buffer));
|
||||||
|
REQUIRE(expected == buffer);
|
||||||
|
REQUIRE(expected.size() == returnValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("serializeJson(JsonObjectSubscript)") {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
deserializeJson(doc, "{\"hello\":42}");
|
||||||
|
JsonObject obj = doc.as<JsonObject>();
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
serializeJson(obj["hello"], result);
|
||||||
|
|
||||||
|
REQUIRE(result == "42");
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("serializeJson(JsonArraySubscript)") {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
deserializeJson(doc, "[42]");
|
||||||
|
JsonArray arr = doc.as<JsonArray>();
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
serializeJson(arr[0], result);
|
||||||
|
|
||||||
|
REQUIRE(result == "42");
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("serializeJson(JsonVariantSubscript)") {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
deserializeJson(doc, "[42]");
|
||||||
|
JsonVariant var = doc.as<JsonVariant>();
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
serializeJson(var[0], result);
|
||||||
|
|
||||||
|
REQUIRE(result == "42");
|
||||||
|
}
|
@ -5,6 +5,7 @@
|
|||||||
add_executable(MsgPackSerializerTests
|
add_executable(MsgPackSerializerTests
|
||||||
destination_types.cpp
|
destination_types.cpp
|
||||||
measure.cpp
|
measure.cpp
|
||||||
|
misc.cpp
|
||||||
serializeArray.cpp
|
serializeArray.cpp
|
||||||
serializeObject.cpp
|
serializeObject.cpp
|
||||||
serializeVariant.cpp
|
serializeVariant.cpp
|
||||||
|
46
test/MsgPackSerializer/misc.cpp
Normal file
46
test/MsgPackSerializer/misc.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include <ArduinoJson.h>
|
||||||
|
#include <catch.hpp>
|
||||||
|
#include <limits>
|
||||||
|
|
||||||
|
template <typename T>
|
||||||
|
void check(T value, const std::string &expected) {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
doc.to<JsonVariant>().set(value);
|
||||||
|
char buffer[256] = "";
|
||||||
|
size_t returnValue = serializeMsgPack(doc, buffer, sizeof(buffer));
|
||||||
|
REQUIRE(expected == buffer);
|
||||||
|
REQUIRE(expected.size() == returnValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("serializeMsgPack(JsonObjectSubscript)") {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
deserializeJson(doc, "{\"hello\":42}");
|
||||||
|
JsonObject obj = doc.as<JsonObject>();
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
serializeMsgPack(obj["hello"], result);
|
||||||
|
|
||||||
|
REQUIRE(result == "*");
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("serializeMsgPack(JsonArraySubscript)") {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
deserializeJson(doc, "[42]");
|
||||||
|
JsonArray arr = doc.as<JsonArray>();
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
serializeMsgPack(arr[0], result);
|
||||||
|
|
||||||
|
REQUIRE(result == "*");
|
||||||
|
}
|
||||||
|
|
||||||
|
TEST_CASE("serializeMsgPack(JsonVariantSubscript)") {
|
||||||
|
DynamicJsonDocument doc;
|
||||||
|
deserializeJson(doc, "[42]");
|
||||||
|
JsonVariant var = doc.as<JsonVariant>();
|
||||||
|
std::string result;
|
||||||
|
|
||||||
|
serializeMsgPack(var[0], result);
|
||||||
|
|
||||||
|
REQUIRE(result == "*");
|
||||||
|
}
|
Reference in New Issue
Block a user