2017-01-20 1 views

답변

1

을 사용하면됩니다. 사용자 지정 serializer가 필요하지 않습니다.

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

public class B { 
    public int n; 
} 

필드에 액세스 할 수 있는지 확인하십시오. 그렇지 않으면 작동하지 않습니다.

1

Java에서 그렇게 할 방법이 없습니다.

+0

알렉스가 [그의 대답] (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; 
    } 

} 

같이해야한다. 그게 전부 야.

관련 문제