Spring和Jackson Json:序列化两组不同的领域

时间:2011-09-28 03:49:16

标签: java spring spring-mvc jackson

我有一个分类界面,带有Visibility.NONE的@JsonAutoDetect注释,所以我可以选择使用@JsonSerialize注释序列化的各个getter

@JsonAutoDetect(getterVisibility = Visibility.NONE)
public interface Classified {

    @JsonSerialize
    String getModel();

直到这里没有问题,当我从@Controller返回带有@ResponseBody注释的分类时,它会返回预期的JSON:

    @RequestMapping(value = "/classified/{idClassified}", method = RequestMethod.GET)
    @ResponseBody
    public final Classified getClassified(@PathVariable final int idClassified) {

然而,当我返回分类列表时,我想返回一小组getter,而使用以下签名,显然它会返回所有标记的getter:

@RequestMapping(value = "/classified", method = RequestMethod.GET)
@ResponseBody
public final List<Classified> searchClassified(@RequestParam final int idBrand,
    @RequestParam final String priceMax, @RequestParam final int page) {

我不知道如何在列表的每个项目中返回较小的分类getter子集。

2 个答案:

答案 0 :(得分:1)

  

“返回一小组getter”

如果您的意思是减少列表中的项目数,请更改控制器的searchClassified方法中的业务逻辑。

如果您的意思是减少每个项目上可用的公共getter方法的数量,您可以创建一个仅实现原始项目getter的子集的接口,并返回它们的列表。

答案 1 :(得分:1)

查看“filtering properties”,其中列出了更改序列化内容的多种方法。我猜Json Views可能是最简单的;可以使用一个较小的视图,然后在没有定义视图时默认为“all”模式(默认为序列化所有属性)。