本文介紹了如何在JAX-RS中映射動態JSON的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我必須使用JAX-RS(RESTEasy作為實現)將JSON映射到Java PoJO。問題是,JSON是動態的。請看這個例子:
{
"typeCode": "SAMPLE",
"data": [
{
"id": "COMMENTS",
"answerValue": {
"type": "YesNoAnswer",
"value": true
}
},
{
"id": "CHOICE",
"answerValue": {
"type": "SelectListAnswer",
"values": ["choice1", "choice2"]
}
}
]
}
動態元素在數據數組中。原則上,每個條目都有一個ID和一個swerValue。但AnswerValue是動態的。根據他的類型,他可以具有單個值(布爾值、字符串、對對象進行編號)或一組值。
如何將其映射到我的Java模型?
推薦答案
感謝他的解決方案@Henrik。在執行他的建議時,我發現了一個不同的解決方案,這個方案更適合我。
我只是使用JsonSubTypes Annotation來處理繼承。
這是我的例子:
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
include = JsonTypeInfo.As.PROPERTY,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = YesNoAnswer.class, name = "YesNoAnswer"),
@JsonSubTypes.Type(value = SelectListAnswer.class, name="SelectListAnswer"),
@JsonSubTypes.Type(value = SelectAddressAnswer.class, name="SelectAddressAnswer")})
abstract class RequestFormAnswer {
private String type;
}
這篇關于如何在JAX-RS中映射動態JSON的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,