2016-08-30 94 views
0

我有一個JSON像 -的Json反序列化 - 映射嵌套對象鍵直接

{ 
"type" : "employee", 
"details" : { 
    "name" : "ABC", 
    "age" : 12, 
    "sex" : "male" 
    } 
} 

和一個Java類像 -

public class Person { 
String name; 
String sex; 
String type; 
int age; 
----getters and setters 
} 

我想知道有沒有辦法直接映射details對象的屬性與details.namePerson.name之類的人員類別的屬性。 我知道這可以通過自定義的反序列化器來實現,但我希望避免它。可能是GSON或Jackson提供的一些註釋。

+0

我不認爲你將能夠做到這一點沒有一個自定義的解串器。這可以通過@JsonWrapped註釋完成。但是這個問題已經在jackson討論過但尚未實現,對GSON不瞭解。 – Franjavi

回答

-1

您可以使用@JsonProperties映射

+0

你能分享一些例子嗎? –

0

有解決這幾個方面,但我會做的是創建下面的類:

public class PersonWrapper { 

    private String type; 

    @JsonProperty("details") 
    private Person person; 

} 

編輯:

如果您不想添加包裝類,您可以嘗試將@JsonRootName(value = "details")添加到您的Person類中。

+0

這是我想要避免的。我明白這會起作用。但意圖在這裏在給定的班級結構內工作 –

+0

我剛剛編輯了我的答案。我從來沒有使用過這個註釋,但是在閱讀完文檔之後,它似乎會做你想做的事情。您可能還需要一些配置更改。請參閱http://stackoverflow.com/questions/11704255/jackson-json-deserialization-with-root-element – Adam