【问题标题】:Hnadle Any JSON definition in Spring Rest controller from a request从请求处理 Spring Rest 控制器中的任何 JSON 定义
【发布时间】:2020-03-05 06:03:44
【问题描述】:

我正在使用以下方式处理在 POST 请求正文中发送的 JSON:

控制器

@PostMapping
    public Library newLibrary(@RequestBody Library newLibrary) {
        return libraryRepository.saveAndFlush(newLibrary);
    }

库模型

    @Column(name = "Name", nullable = false)
    private String name;

请求正文中的 JSON

{

    "name" : "testLibrary"
}

但我的应用程序在调用中不会收到明确的 JSON 结构,例如,我收到类似这样的内容 -

{   
    "names" : ["testLibrary","testLibrary2"],
    "anyKey" : "val",
    "anykey2" : {"keys":"vals"}
}

所以我需要知道如何在单个 Post 映射函数中处理这种情况。

【问题讨论】:

  • 你想从请求json中只读取name属性吗?

标签: json spring rest jackson


【解决方案1】:

您可以使用来自 jackson 库的 @JsonAnySetter 注释。

在您的模型内部:

private Map<String, Object> details;

@JsonAnySetter
public void setDetail(String key, Object value) {
    if (null == details) {
        this.details = new HashMap<>();
    }
    this.details.put(key, value);
}

它会将额外的(未定义到模型中的)字段放入地图中。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2016-01-27
    • 2020-04-02
    • 2015-06-08
    • 2021-07-09
    • 1970-01-01
    • 2023-03-27
    • 2017-02-24
    • 2016-07-19
    • 1970-01-01
    相关资源
    最近更新 更多