首页 > 解决方案 > 我怎样才能用杰克逊只返回一个内部对象的几个 Json 字段

问题描述

我正在使用杰克逊 + 弹簧 RestControlles

假设我有 3 节课

class Card {
   String id;
   String pan;
   String holder;
   String expiry;
}

class CardProfile {
   String id;
   Card card;
   ...
}

class Recipient {
   String name;
   Card card;
   ...
}

因此,当我序列化 CardProfile 对象时,我希望对象卡的所有字段在结果 json 中都是百分比。

但是在 Recipient object 的情况下,Json 必须只有 object card 的一部分(例如:pan, holder)。有没有办法用不同的字段集在 json 中呈现 Card 对象?

使用 @JsonIgnore 之类的注释将从这两种情况中删除字段。

谢谢。

标签: restspring-bootjackson

解决方案


再想一想——这种方法是否可扩展?如果您再次需要类似的东西怎么办?为什么不依赖继承并创建一个基类和多个具有您感兴趣的属性的子类?

class Card{
   // bare min attribute
   .....
}

class SubCard1 extends Card{
   //add more attribute 
   .....
}

class SubCard2 extends Card{
   //add more attribute 
   .....
}

根据您的需要使用 SubCard1 或 SubCard2?同样可以用于其他类。如果这更动态 - 查看设计模式。


推荐阅读