我有一个班级Foo
:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Foo {
private String color = "cccccc";
public void setColor(String color) {
this.color = color;
}
@FlexField(fieldType = FlexField.FlexFieldType.ReadWrite)
public Color getColor() {
return ColorUtil.getColor(color);
}
public void setColor(Color color) {
this.color = ColorUtil.getHexString(color);
}
}
杰克逊色混合:
abstract class ColorMixIn extends java.awt.Color{
ColorMixIn(@JsonProperty("red") int red, @JsonProperty("green") int green, @JsonProperty("blue") int blue) {
super(red, green, blue);
}
@Override @JsonProperty("red") public abstract int getRed();
@Override @JsonProperty("green") public abstract int getGreen();
@Override @JsonProperty("blue") public abstract int getBlue();
}
杰克逊色彩模块:
public class ColorModule extends SimpleModule {
@Override
public void setupModule(SetupContext context) {
context.setMixInAnnotations(java.awt.Color.class, ColorMixIn.class);
//other setup if needed
}
}
他们的注册类似于:
val mapper: ObjectMapper = new ObjectMapper
mapper.registerModule(new ColorModule())
当我返回Foo
时,它会按预期序列化:
"foo": {
"color": {
"red": 204,
"green": 204,
"blue": 204
}
}
然而,当我想从JSON创建一个foo时,它只会创建:
"foo": {
"color": "cccccc"
}
我尝试过看起来像的JSON:
"foo": {
"color": {
"red": 224,
"green": 224,
"blue": 224
}
}
和
"foo": {
"color": "dddddd"
}
无济于事。
我想在ColorMixin
类中创建一个新的构造函数,如下所示:
ColorMixIn(@JsonProperty("color") String hex) {
super(java.awt.Color.decode(hex).getRed(), java.awt.Color.decode(hex).getGreen(), java.awt.Color.decode(hex).getBlue()
}
可能有所帮助,但没有快乐。
我确信我遗漏了一些明显的想法?