春天JSON补丁无法更新嵌套地图对象

问题描述 投票:1回答:1

在我的应用我想支持JSON补丁请求以施加部分更新我的实体,我直接使用Spring提供的弹簧数据休息库提供补丁的实施。

我无法使用Spring的补丁实现在Java中部分更新地图,或者Spring实现并不能够支持这样的操作。

春天补丁JSON修补程序操作转换为SPEL操作,一切工作正常有固定属性(或领域)的POJO,但似乎不能与地图工作在那里我会承担的“场”是地图的钥匙。

明知场面春天有个JSON路径转换为SPEL操作的背后,我也试着在我的PATCH有效载荷使用SPEL符号,没有任何结果。这是我已经试过

让我们假定这是这种情况:

//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中的所有对象。

json spring spring-data-rest json-patch
1个回答
1
投票

对于所有其他不是已经看到了相应的问题,对于由此拉入请求,这似乎是固定的,只是验证它为我们的项目(贴敷Map<Locale, String>)和它的工作。

请参考:

© www.soinside.com 2019 - 2024. All rights reserved.