2014-02-17 40 views
0

我不斷收到錯誤請求400時試圖發佈此陣列JSON的對象「對不起格式錯誤」:亨德爾JSON

{ 
"type":"input","uniqueId":434,"label":"name","viewToCall":"input-configuration-menu"},{"type":"button","uniqueId":930,"label":"name","viewToCall":"button-configuration-menu"}] 

林不知道如何韓德爾不同類型的JSON對象在我@RequestBody:

@RequestMapping(value="/saveForm", method = RequestMethod.POST) 
    public @ResponseBody void saveForm(@RequestBody ArrayList<Components> text){ 
     do somthing... 
    } 

我發現這個resourcer但我沒有經驗讓它在網絡環境下工作: Spring @RequestBody containing a list of different types (but same interface) http://programmerbruce.blogspot.com.es/2011/05/deserialize-json-with-jackson-into.html http://aredko.blogspot.se/2012/04/json-for-polymorhic-java-object.html

+0

您發佈的JSON擁有無可匹敵]在結束 – Mir

+0

它只是錯過了當提問 –

+0

您可能有問題的內容類型的標題,顯示您的請求的標題 – jpprade

回答

0

JSON開頭缺少[,否則它是有效的JSON。如果問題不是丟失的尖括號,請將日誌放在DEBUG或TRACE中,然後發佈堆棧跟蹤。

另外的組件需要像這樣的東西來註釋,以便傑克遜知道哪些對象需要被實例化(見Jackson polymorphism without annotations):

@JsonTypeInfo(use=JsonTypeInfo.Id.NAME, include=As.WRAPPER_OBJECT) 
@JsonSubTypes({ 
    @Type(value=Input.class, value="input"), 
    @Type(value=Button.class, value="button")}) 
public interface Component { 
    ... 
} 

@JsonTypeName("type") 
public Sub1 implements Component { 
} 

@JsonTypeName("button") 
public Button implements Component { 
} 
+0

非常感謝真的幫助我,只有differens是我用「JsonTypeInfo.As.PROPERTY」和一個抽象類。 =) –