Я пытаюсь десериализовать объект JSON из этого кода JSON:
{
"bg" : {
"fileName" : "data/gui/mainMenuBg.jpg"
},
"startGameBtn" : {
"text" : "Start Game",
"innerWidth" : 100,
"innerHeight" : 50
}
}
Объект, который я десериализирую, выглядит просто так:
public class MainMenu extends BasicTWLGameState {
private StateBasedGame app;
@JsonProperty private Image bg;
@JsonProperty private Button startGameBtn;
// [...]
}
Я создал дополнение для базового класса Button
:
public abstract class WidgetMixIn {
// Not sure why I have to ignore only this when there are other setters that it should complain about...
@JsonIgnore public abstract boolean setBorderSize(Border border);
@JsonProperty("innerWidth") public abstract int getInnerWidth();
@JsonProperty("innerHeight") public abstract int getInnerHeight();
public abstract void setInnerSize(
@JsonProperty("innerWidth") int width,
@JsonProperty("innerHeight") int height);
}
Миксин для самого класса Button
:
public class ButtonMixIn {
@JsonProperty public String text;
}
Я получаю ошибку:
ERROR:Unrecognized field "innerWidth" (Class de.matthiasmann.twl.Button), not marked as ignorable
at [Source: data\gui\mainMenu.json; line: 7, column: 27] (through reference chain: state.MainMenu["startGameBtn"]->de.matthiasmann.twl.Button["innerWidth"])
Почему он не может найти свойство innerWidth
, определенное в микшировании Widget
?
Приветствие.