Don't use JsonBuffer to create or parse objects and arrays.

* Added DynamicJsonArray and StaticJsonArray
* Added DynamicJsonObject and StaticJsonObject
* Added DynamicJsonVariant and StaticJsonVariant
* Added deserializeJson()
* Removed JsonBuffer::parseArray(), parseObject() and parse()
* Removed JsonBuffer::createArray() and createObject()
This commit is contained in:
Benoit Blanchon
2018-02-26 16:05:16 +01:00
parent baf5adcf33
commit 7a2a64803a
89 changed files with 1612 additions and 1691 deletions

View File

@ -23,8 +23,7 @@ TEST_CASE("std::stream") {
SECTION("JsonObject") {
std::ostringstream os;
DynamicJsonBuffer jsonBuffer;
JsonObject& object = jsonBuffer.createObject();
DynamicJsonObject object;
object["key"] = "value";
os << object;
REQUIRE("{\"key\":\"value\"}" == os.str());
@ -32,8 +31,7 @@ TEST_CASE("std::stream") {
SECTION("JsonObjectSubscript") {
std::ostringstream os;
DynamicJsonBuffer jsonBuffer;
JsonObject& object = jsonBuffer.createObject();
DynamicJsonObject object;
object["key"] = "value";
os << object["key"];
REQUIRE("\"value\"" == os.str());
@ -41,8 +39,7 @@ TEST_CASE("std::stream") {
SECTION("JsonArray") {
std::ostringstream os;
DynamicJsonBuffer jsonBuffer;
JsonArray& array = jsonBuffer.createArray();
DynamicJsonArray array;
array.add("value");
os << array;
REQUIRE("[\"value\"]" == os.str());
@ -50,8 +47,7 @@ TEST_CASE("std::stream") {
SECTION("JsonArraySubscript") {
std::ostringstream os;
DynamicJsonBuffer jsonBuffer;
JsonArray& array = jsonBuffer.createArray();
DynamicJsonArray array;
array.add("value");
os << array[0];
REQUIRE("\"value\"" == os.str());
@ -59,26 +55,28 @@ TEST_CASE("std::stream") {
SECTION("ParseArray") {
std::istringstream json(" [ 42 /* comment */ ] ");
DynamicJsonBuffer jsonBuffer;
JsonArray& arr = jsonBuffer.parseArray(json);
REQUIRE(true == arr.success());
DynamicJsonArray arr;
bool success = deserializeJson(arr, json);
REQUIRE(true == success);
REQUIRE(1 == arr.size());
REQUIRE(42 == arr[0]);
}
SECTION("ParseObject") {
std::istringstream json(" { hello : world // comment\n }");
DynamicJsonBuffer jsonBuffer;
JsonObject& obj = jsonBuffer.parseObject(json);
REQUIRE(true == obj.success());
DynamicJsonObject obj;
bool success = deserializeJson(obj, json);
REQUIRE(true == success);
REQUIRE(1 == obj.size());
REQUIRE(std::string("world") == obj["hello"]);
}
SECTION("ShouldNotReadPastTheEnd") {
std::istringstream json("{}123");
DynamicJsonBuffer jsonBuffer;
jsonBuffer.parseObject(json);
DynamicJsonObject obj;
deserializeJson(obj, json);
REQUIRE('1' == json.get());
}
}