Попытка десериализации / сериализации JSON в Java бинов, которые я создал. Действительно новый для Джексона и это стремление, так что терпите меня. У меня есть следующее:
{
"foo": {
"firstBlock": {
"myValue": 1,
"someBool": true,
"stringValue": "OK"
},
"anotherBlock": {
"values": [
{
"yikes01": 42
},
{
"yikes02": 215
}
],
"myInt": 64,
"logging": "Yes"
}
}
}
Мои Java бины разбиты на несколько, так как объекты в JSON используются многократно, так что это будет:
@JsonRootName("foo")
public class FooBean {
private FirstBlockBean firstBlock;
private AnotherBlockBean anotherBlock;
@JsonGetter("firstBlock")
public FirstBlockBean getFirstBlock() { return firstBlock; }
@JsonSetter("firstBlock")
public void setFirstBlock(FirstBlockBean firstBlock) { this.firstBlock = firstBlock; }
@JsonGetter("anotherBlock")
public AnotherBlockBean getAnotherBlock() { return anotherBlock; }
@JsonSetter("firstBlock")
public void setAnotherBlock(AnotherBlockBean anotherBlock) { this.anotherBlock = anotherBlock; }
}
@JsonRootName("firstBlock")
public class FirstBlockBean {
private int myValue;
private Boolean someBool;
private String stringValue;
@JsonGetter("myValue")
public int getMyValue() { return myValue; }
@JsonSetter("myValue")
public void setMyValue(int myValue) { this.myValue = myValue; }
@JsonGetter("someBool")
public Boolean getSomeBool() { return someBool; }
@JsonSetter("someBool")
public void setSomeBool(Boolean someBool) { this.someBool = someBool; }
@JsonGetter("stringValue")
public String getStringValue() { return stringValue; }
@JsonSetter("someBool")
public void setStringValue(String stringValue) { this.stringValue = stringValue; }
}
... и класс AnotherBlockBean
реализован аналогичным образом (для краткости опущен). Я использую Джексона для этого, и мой вопрос: есть ли в Джексоне механизм для сериализации и десериализации для этого случая? В идеале я хотел бы что-то вроде (псевдокод ниже, потому что я не смог ничего найти с помощью поисков или поисков Google здесь):
// Assume "node" contains a JsonNode for the tree and foo is an uninitialized FooBean class object.
JsonHelper.deserialize(node, FooBean.class, foo);
В этот момент я был бы возможность читать значения обратно:
int i = foo.getFirstBlock().getMyValue();
System.out.println("i = " + i); // i = 1
Точно так же я хотел бы иметь возможность взять экземпляр foo и сериализовать его обратно в JSON другим методом. Я мечтаю о том, чтобы получить такую встроенную функциональность или она существует?