2017-01-20 97 views

回答

1

您可以簡單地使用@JsonUnwrapped。不需要自定義序列化器:

public class A { 
    public String field; 
    @JsonUnwrapped 
    public B b; 
} 

public class B { 
    public int n; 
} 

注意字段可訪問性或它不起作用。

1

在Java中沒有辦法做到這一點。

+0

正如Alex在[他的回答](http://stackoverflow.com/a/41775176/466862)中演示的那樣,這是可能的。 –

2

您可以使用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; 
    } 

} 

系列化它可以使用自定義序列。而已。