gpt4 book ai didi

java - Spring 3.1.1 web MVC - 限制对接口(interface) getter 的响应

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:31:10 24 4
gpt4 key购买 nike

以下是一个基于 Spring web MVC 3.1.1 的项目的片段。 Json 序列化是通过 Jackson 进行的。

我有一个映射到 URL 的 Controller ,一切正常。

@Controller
@RequestMapping("/vod")
public class VODController {
private Configuration configuration;
private SearchAPI searchAPI;

@RequestMapping(method = RequestMethod.GET, params = "cmd=list")
public @ResponseBody GetAssetsReply listVODAssets(long offset, int limit) {
SearchVODAssetRequest searchVODAssetRequest = new SearchVODAssetRequest();
//.... some irrelevant code
return searchAPI.searchVODAssets(searchVODAssetRequest);
}
}

这是 GetAssetsReply:

public class GetAssetsReply  {
private long totalAssets;
private List<VODAsset> assets = new LinkedList<VODAsset>();

// Getters and setters removed for simplicity
}

VODAsset 是一个接口(interface):

public interface VODAsset {
public String getName();
}

这是它的实现:

public class AssetElement implements VODAsset {
private String id;
private String name;
private double duration;

// Getters and setters removed for simplicity
}

最后是问题: Controller 返回给我预期的结果,但有一个缺点——它返回 VOD Assets 及其 ID 和持续时间以及名称。由于该对象由上述 VODAsset 接口(interface)指向,因此我期望仅获得名称。我怎样才能得到这种行为?任何帮助将不胜感激

最佳答案

如果我正确理解你的问题并且你正在使用 Jackson要将结果转换为 JSON,则可以使用 org.codehaus.jackson.annotate.JsonIgnore避免字段被 polupated 到 JSON 结果。 (Henry) 此外,可以添加到接口(interface) @JsonAutoDetect(JsonMethod.NONE),这将导致 Jackson 不自动搜索要序列化的字段,然后添加 @JsonProperty 关于确实需要序列化的字段(实际上实现了 Jackson 字段序列化策略的白名单方案)。

下面是解决上述问题的示例代码:

@JsonAutoDetect(JsonMethod.NONE) //This tells the json serializer not to search for properties to serialize
public interface VODAsset {
@JsonProperty //This tells the json serializer that this is a property that it should serialize
public String getName();
}

另一方面,每个字段的忽略方案可以通过以下方式实现:

Marker annotation that indicates that the annotated method or field is to be ignored by introspection-based serialization and deserialization functionality. That is, it should not be consider a "getter", "setter" or "creator".

@JsonIgnore
public String getId() {
return id;
}

关于java - Spring 3.1.1 web MVC - 限制对接口(interface) getter 的响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10871580/

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