🐛 fix bug in diff function #1983

This commit is contained in:
Niels Lohmann 2020-04-13 14:35:36 +02:00
parent b7be613b6e
commit dd04a32918
No known key found for this signature in database
GPG key ID: 7F3CEA63AE251B69
3 changed files with 10 additions and 2 deletions

View file

@ -7930,7 +7930,7 @@ class basic_json
result.push_back(
{
{"op", "add"},
{"path", path + "/" + std::to_string(i)},
{"path", path + "/-"},
{"value", target[i]}
});
++i;

View file

@ -22741,7 +22741,7 @@ class basic_json
result.push_back(
{
{"op", "add"},
{"path", path + "/" + std::to_string(i)},
{"path", path + "/-"},
{"value", target[i]}
});
++i;

View file

@ -1896,6 +1896,14 @@ TEST_CASE("regression tests")
static_assert(!std::is_constructible<json, std::tuple<NotSerializableData, std::string>>::value, "");
static_assert(std::is_constructible<json, std::tuple<int, std::string>>::value, "");
}
SECTION("issue #1983 - JSON patch diff for op=add formation is not as per standard (RFC 6902)")
{
const auto source = R"({ "foo": [ "1", "2" ] })"_json;
const auto target = R"({"foo": [ "1", "2", "3" ]})"_json;
const auto result = json::diff(source, target);
CHECK(result.dump() == R"([{"op":"add","path":"/foo/-","value":"3"}])");
}
}
#if not defined(JSON_NOEXCEPTION)