2014-04-25 44 views
-1

我需要反序列化JSON響應反序列化JSON響應多個對象

response: { 
speed: 40, 
distance: 20, 
time: 3 
} 

到3個不同的對象,那就是

Class Speed implements Base{ 
    int speed; 
} 

Class Distance implements Base{ 
    int distance; 
} 

Class Time implements Base{ 
    int time; 
} 

這是我到目前爲止,

@jsondeserialize(using = customdeserializer.class) 
Class Response implements Base{ 
    ... 
} 

Class customdeserializer extends JsonDeserializer<List<Base>> { 

@Override 
public List<Base> deserialize(...) { 
//read Jsonparser 
// construct objects for Speed, Time and Distance 
    //return 
} 
} 

Class Context { 

public List<Base> converter(..) { 
    ObjectMappper mapper = new ObjectMapper() 
    List<Base> params = objectMapper.readValue(jsonValue, new TypeReference<List<Response>>() { }); 
    return params; 

} 

} 

問題:我的自定義序列化程序永遠不會被調用。我證實了這一由具有調試點

我使用FasterXML傑克遜

任何想法如何做到這一點使用自定義解串器。你的情況

回答

0

的反應應該是像follwing

response: [ 
speed: 40, 
distance: 20, 
time: 3 
] 

當您通過JSON你傳遞的方式(在{}),它將被視爲一個對象,而不是對象的列表,以JSON表示列表中您需要在[]括號內指定它們

+0

不幸的是,我無法修改響應。它來自第三方服務。 – user3571458

+0

我認爲那麼你需要改變你的實現,就像一個擁有所有3個對象的Has-A關係的船隻 –

+0

是的,那是我的最後一個選擇 – user3571458