gpt4 book ai didi

java - 使用 spring mvc 和 jackson 允许带或不带根节点的 json 的正确方法

转载 作者:太空宇宙 更新时间:2023-11-04 07:15:23 25 4
gpt4 key购买 nike

我有以下 Controller 方法:

@RequestMapping(value = "/v1/users/{userId}/settings", method = RequestMethod.POST, produces = { "application/json" }, consumes = { "application/json" })
@ResponseStatus(value = HttpStatus.CREATED)
@ResponseBody
public UserSetting createUserSetting(@PathVariable("userId") String userId,
@RequestBody Setting setting){
return userSettingService.createSetting(userId, userSetting);
}

调用 URL/v1/users/12345/settings POST 时

与负载

{"Setting":{"name":"CoolSetting", "id":"SETTING-ID"}}

该方法的行为符合预期。

我还想接受的是:

{"name":"CoolSetting", "id": "SETTING-ID"}

如何接受没有根标记的第二个有效负载版本。

有问题的对象看起来像这样

public class Setting{
@JsonProperty
private String id;

@JsonProperty
private String name;
//getters and setters removed
}

如何使用 json 方法告诉 spring 到 marshel?

最佳答案

您可以使用 DeserializationConfig.Feature.UNWRAP_ROOT_VALUE 属性来实现此结果。对于序列化,请使用 SerializationConfig.Feature.WRAP_ROOT_VALUE。

详细说明和用法可参见此博客:Jackson with and without root node

关于java - 使用 spring mvc 和 jackson 允许带或不带根节点的 json 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20044565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com