我有一个类:
class Car {
private Engine myEngine;
@JsonProperty("color")
private String myColor;
@JsonProperty("maxspeed")
private int myMaxspeed;
@JsonGetter("color")
public String getColor()
{
return myColor;
}
@JsonGetter("maxspeed")
public String getMaxspeed()
{
return myMaxspeed;
}
public Engine getEngine()
{
return myEngine;
}
}
和Engine类似
class Engine {
@JsonProperty("fueltype")
private String myFueltype;
@JsonProperty("enginetype")
private String myEnginetype;
@JsonGetter("fueltype")
public String getFueltype()
{
return myFueltype;
}
@JsonGetter("enginetype")
public String getEnginetype()
{
return myEnginetype;
}
}
我想使用具有
结构的Jackson将Car对象转换为JSON'car': {
'color': 'red',
'maxspeed': '200',
'fueltype': 'diesel',
'enginetype': 'four-stroke'
}
我已尝试在this中提供的答案,但它对我不起作用,因为字段名称与getter不同
我知道如果字段名称是引擎,我可以在引擎上使用@JsonUnwrapped。但是在这种情况下该怎么做。
答案 0 :(得分:5)
将@JsonUnwrapped
和@JsonProperty
放在一起:
@JsonUnwrapped
@JsonProperty("engine")
private Engine myEngine;
答案 1 :(得分:0)
您应该在Car类中使用@JsonUnwrapped
,如下所示JSON对象:
class Car {
@JsonUnwrapped
private Engine myEngine;
@JsonProperty("color")
private String myColor;
@JsonProperty("maxspeed")
private int myMaxspeed;
...
答案 2 :(得分:0)
我认为这里最好的解决方案是对@JsonValue
类中的myEngineType
属性使用Engine
注释,它只会序列化此属性而不是整个Engine
对象。
所以你的代码就像这样:
class Engine {
@JsonProperty("fueltype")
private String myFueltype;
@JsonValue
@JsonProperty("enginetype")
private String myEnginetype;
}
您可以查看this answer了解详情。