Unverified Commit a29e3b13 by Niels Lohmann Committed by GitHub

Merge pull request #2054 from nlohmann/feature/issue1983

Fix bug in diff function
parents c0a39b22 dd04a329
...@@ -8347,7 +8347,7 @@ class basic_json ...@@ -8347,7 +8347,7 @@ class basic_json
result.push_back( result.push_back(
{ {
{"op", "add"}, {"op", "add"},
{"path", path + "/" + std::to_string(i)}, {"path", path + "/-"},
{"value", target[i]} {"value", target[i]}
}); });
++i; ++i;
......
...@@ -23833,7 +23833,7 @@ class basic_json ...@@ -23833,7 +23833,7 @@ class basic_json
result.push_back( result.push_back(
{ {
{"op", "add"}, {"op", "add"},
{"path", path + "/" + std::to_string(i)}, {"path", path + "/-"},
{"value", target[i]} {"value", target[i]}
}); });
++i; ++i;
......
...@@ -1896,6 +1896,14 @@ TEST_CASE("regression tests") ...@@ -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<NotSerializableData, std::string>>::value, "");
static_assert(std::is_constructible<json, std::tuple<int, 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) #if not defined(JSON_NOEXCEPTION)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment