gpt4 book ai didi

java - Jackson 仅序列化接口(interface)方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:54:57 26 4
gpt4 key购买 nike

我有一个对象 A 和一些方法 ma, mb, mc 并且这个对象实现了一个接口(interface)B 只有 mamb

当我序列化 B 时,我希望只有 mamb 作为 json 响应,但我也得到 mc.

我想自动化此行为,以便我序列化的所有类都基于接口(interface)而不是实现进行序列化。

我应该怎么做?

例子:

public interface Interf {
public boolean isNo();

public int getCountI();

public long getLonGuis();
}

实现:

public class Impl implements Interf {

private final String patata = "Patata";

private final Integer count = 231321;

private final Boolean yes = true;

private final boolean no = false;

private final int countI = 23;

private final long lonGuis = 4324523423423423432L;

public String getPatata() {
return patata;
}


public Integer getCount() {
return count;
}


public Boolean getYes() {
return yes;
}


public boolean isNo() {
return no;
}


public int getCountI() {
return countI;
}

public long getLonGuis() {
return lonGuis;
}

}

序列化:

    ObjectMapper mapper = new ObjectMapper();

Interf interf = new Impl();
String str = mapper.writeValueAsString(interf);

System.out.println(str);

响应:

 {
"patata": "Patata",
"count": 231321,
"yes": true,
"no": false,
"countI": 23,
"lonGuis": 4324523423423423500
}

预期响应:

 {
"no": false,
"countI": 23,
"lonGuis": 4324523423423423500
}

最佳答案

只需注释您的接口(interface),以便 Jackson 根据接口(interface)的类而不是底层对象的类构造数据字段。

@JsonSerialize(as=Interf.class)
public interface Interf {
public boolean isNo();
public int getCountI();
public long getLonGuis();
}

关于java - Jackson 仅序列化接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18654293/

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