如何解决同一对象有多个实例时的Jackson json属性名称
以这个例子为例:
class Car {
Door leftDoor;
Door rightDoor;
Door getLeftDoor();
Door getRightDoor();
}
class Door {
String getType();
}
目标是拥有这个json:
{
"Door.lefttype": "A","Door.righttype": "B"
}
我将对象映射器配置为仅将具有@JsonProperty的内容转换为Json。
如果我只有一扇门,我可以简单地将@JsonProperty("door.type")
放在String getDoorType()
上。但是由于存在多个相同类型的实例,所以我无法将注释放在最后一个类上。此外,我需要@JsonUnwrapped,因为我不希望它在json中建立层次结构。我想要这个:
door.lefttype: "A"
代替
door: {
lefttype: "A"
}
到目前为止,我所拥有的(我正在使用接口+ mixins,因为我无法直接访问这些类):
public interface CarMixin {
@JsonProperty
@JsonUnwrapped
Door getLeftDoor();
@JsonProperty
@JsonUnwrapped
Door getRightDoor();
}
public interface DoorMixIn {
@JsonProperty
String getType();
}
我需要确切的名称,所以这还不够。我需要使用命名的JsonProperties
解决方法
我认为我对mixin的理解不如您对我的理解,我必须说我不清楚您修改现有类的局限性是什么,但我认为可能会遵循以下内容帮助:
class Car {
Door leftDoor ;
Door rightDoor ;
@JsonProperty("Door.lefttype")
String leftType() {
return leftDoor.getType() ;
}
@JsonProperty("Door.righttype")
String leftType() {
return rightDoor.getType() ;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。