使用Java 8和傑克遜,我想從這裏解析JSON:傑克遜和JSON當值的類型改變
的問題是,有一個單一的價值,有時是空數組,有時是一個HashMap。我粘貼空兩個摘錄,檢查出cor_icon每個:
"2630775": {
"id": "2630775",
"label": "breakfast grill",
"description": "breakfast sandwiches, turkey sausage and bacon, home fries, pork sausage and bacon, omelets made to order with whole eggs, egg whites, eggbeaters and assorted fillings",
"zero_entree": "0",
"cor_icon": {
"18": "humane"
},
或者:
"4779080": {
"id": "4779080",
"label": "sweet chili vegan soup\nchicken egg drop soup",
"description": "",
"zero_entree": "0",
"cor_icon": {
"1": "vegetarian",
"4": "vegan"
},
至於反對:
"2630777": {
"id": "2630777",
"label": "morning pastries",
"description": "assorted danish, muffins, bagels, coffee cakes and tea breads",
"zero_entree": "0",
"cor_icon": [],
"ordered_cor_icon": [],
對於我的Java二傳手:
@JsonSetter("cor_icon")
public void setCorIcon(HashMap ci)
{
cor_icon = ci;
}
或更好:
@JsonSetter("cor_icon")
public void setCorIcon(HashMap<String, String> ci)
{
cor_icon = ci;
}
這個工作正常,當有數據但沒有時,當我得到「cor_icon」:[]傑克遜拋出一個異常,說它不能從cor_icon反序列化HashMap。如果我將cor_icon更改爲ArrayList,那麼當存在數據時,Jackson會抱怨它無法從cor_icon反序列化ArrayList。
那麼有什麼竅門?
本文可能會幫助你。 http://www.baeldung.com/jackson-deserialization –