我用fasterxml
序列化/反序列化JSON如何在序列化/反序列化JSON時擦除實例類型?
public class A {
String field;
B b;
}
public class B {
int n;
}
我希望得到一個JSON格式類似這樣的
{
"field": "abc",
"n": 123
}
這可能嗎?
我用fasterxml
序列化/反序列化JSON如何在序列化/反序列化JSON時擦除實例類型?
public class A {
String field;
B b;
}
public class B {
int n;
}
我希望得到一個JSON格式類似這樣的
{
"field": "abc",
"n": 123
}
這可能嗎?
您可以簡單地使用@JsonUnwrapped
。不需要自定義序列化器:
public class A {
public String field;
@JsonUnwrapped
public B b;
}
public class B {
public int n;
}
注意字段可訪問性或它不起作用。
在Java中沒有辦法做到這一點。
您可以使用Jackson註釋來提供特定的解串器。
@JsonDeserialize(using = ADeserializer.class)
public class A {
private String field;
private B b;
// ...
}
一種你喜歡的類型解串器應該是這樣的
public class ADeserializer extends JsonDeserializer<A> {
@Override
public A deserialize(JsonParser p, DeserializationContext ctx) throws IOException {
ObjectCodec codec = p.getCodec();
JsonNode node = codec.readTree(p);
String field = node.get("field").asText();
int n = node.get("n").asInt();
A a = new A();
B b = new B();
b.setN(n);
a.setField(field);
a.setB(b);
return a;
}
}
系列化它可以使用自定義序列。而已。
正如Alex在[他的回答](http://stackoverflow.com/a/41775176/466862)中演示的那樣,這是可能的。 –