在Spring Boot中如何基于基于@JsonView的rest方法将不同的名称映射到json属性?

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

我有2套其余的API,它们使用相同的Java POJO类通过Spring boot实现。我必须基于API返回不同的字段,并为几个字段使用不同的名称。目前,我正在为一组API使用@JsonView。但是我还需要为@JsonView命名不同的名称。例如:对于@JsonView,字段“主机”需要命名为“ ip”,对于其他API,则必须将其命名为“主机”。我不确定如何根据@JsonView映射不同的属性名称。

我检查了一些结果,例如使用MixIns。但不确定如何在Spring Boot Rest API中进行操作,尤其是在方法级别。

public class Con {

@JsonView(View.ConInfo.class)
private String host;

private String name;

}

控制器方法:

@JsonView(View.ConInfo.class)
@GetMapping
public Con getConInfo()  {}

@GetMapping("/raw")
public Con getCon()  {}

预期:{“ ip”:“ 10xxx”} for getConInfo API

{{host“:” 10xxx“,” name“:” con1“}对于getCon API。

实际:为getConInfo API获取{“ host”:“ 10xxx”}

spring-boot jackson spring-restcontroller json-view
1个回答
0
投票

您可以尝试将@JsonView批注放置在吸气剂上。

但是,由于您似乎需要不同的有效负载,因此建议您使用不同的类来表示每个有效负载。

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