в моем приложении я пытаюсь поддерживать запросы на исправление JSON для частичного обновления моих сущностей, и я использую напрямую реализацию Patch, предоставленную Spring в библиотеке spring-data-rest.
Я не могу использовать реализацию Spring Patch для частичного обновления карт в Java, или реализация Spring не может поддерживать такую операцию.
Spring Patch преобразует операции исправления JSON в операции SPEL, и все работает нормально с POJO, имеющими фиксированные свойства (или поле), но, похоже, не работает с картами, где я бы предположил, что «поля» являются ключами карты.
Зная, что за кулисами Spring преобразует путь JSON в операцию SPEL, я также попытался использовать нотацию SPEL в своей полезной нагрузке PATCH, но безрезультатно. Это то, что я пробовал
Предположим, такая ситуация:
//Here is my object
public class Book {
public String author;
public String ISBN;
public Map<String, String> characters;
}
// Here I create a simple instance of the object
Book myBook = new Book();
myBook.author = "Me"
myBook.ISBN = "1234567890"
myBook.characters = new HashMap<>();
myBook.characters.put("protagonist", "Pinco");
myBook.characters.put("antagonist", "Pallo");
// Here the type of operations that work
[
{"op": "replace", "path": "/author", "value": "NewAuthor"},
{"op": "replace", "path": "/ISBN", "value": 0987654321 },
]
// I can also modify completely the Map if I want
[
{"op": "replace", "path": "/characters", "value": {"protagonist": "Pallo", "antagonist": "Pinco"} }
]
// But I can't update a single value in the map
[
{"op": "replace", "path": "/characters/protagonist", "value": "Pallo" },
{"op": "replace", "path": "/characters/antagonist", "value": "Pinco" }
]
// I've also tried weird stuff, but doesn't work
[
{"op": "replace", "path": "/characters[antagonist]", "value": "Pinco"}
]
Я ожидал, что операция замены на вложенной карте сработает, проверив ключ, но, возможно, я делаю что-то не так или мне нужно просто представить все объекты, такие как POJO, с обычными полями, чтобы это работало.

Для всех остальных, которые еще не видели соответствующую проблему и запрос на перенос для этого, здесь, похоже, он исправлен, просто проверил его для нашего проекта (исправление Map<Locale, String>), и он сработал.
Ссылаться на:
Подтверждено для меня. Что касается Указатель JSON RFC6901 и Патч JSON RFC6902, ваши операции, похоже, исправлены. Мои похожи.