- 
                Notifications
    You must be signed in to change notification settings 
- Fork 31
Open
Description
When an item is added to an existing index, the result should be only an add operation on that index.
Instead, the patch contains a series of replace operations and an add operation for the last item, which was moved to an index that did not previously exist.
use Swaggest\JsonDiff\JsonDiff;
use Swaggest\JsonDiff\JsonPatch;
$original = (object) [
    "items" => ["a", "b", "c"],
];
$modified = (object) [
    "items" => ["a", "x", "b", "c"],
];
$jsonDiff = new JsonDiff(
    original: $original,
    new: $modified,
);
echo json_encode(JsonPatch::export($jsonDiff->getPatch()), JSON_PRETTY_PRINT);The current result:
[
    {
        "op": "replace",
        "path": "/items/1",
        "value": "x"
    },
    {
        "op": "replace",
        "path": "/items/2",
        "value": "b"
    },
    {
        "op": "add",
        "path": "/items/3",
        "value": "c"
    }
]The expected result:
[
    { 
        "op": "add", 
        "path": "/items/1",
        "value": "x"
     }
]jelen07
Metadata
Metadata
Assignees
Labels
No labels