簡體   English   中英

用Jackson自動進行JSON反序列化

[英]Automatic JSON deserialization with Jackson

我是Jackson的新手,我有一個Web服務,期望通過HTTP POST請求傳遞JSON對象。 JSON對象將被映射到Java類以進行進一步處理。

所以我有這個:

@Path("/")
public class RestService {
    @POST
    @Consumes("application/json")
    public String postAction(MyClass json) {
        // ...
    }
}

MyClass看起來像這樣:

public class MyClass {
    protected String var1;
    protected JSONArray var2;
}

關鍵是,var2是一個數組,其中保存JSONObjects(或為空)。 這些JSON對象應該映射到另一個類MySubClass,例如

public class MySubClass {
    protected String subvar1;
}

因此,我們將通過POST傳入匹配的String,類似於有效的JSON對象:

{"var1": "x", "var2": [{"subvar1": "1"},{"subvar1": "2"}]}

問題是,每次崩潰都會出現如下錯誤消息:

string(419)“ HTTP / 1.1 400 Bad Request Date:Mon,26 Oct 2015 15:53:26 GMT內容類型:text / html連接:close服務器:Jetty(9.2.2.v20140723)org.codehaus.jackson。 map.JsonMappingException:無法從[源:HttpInputOverHTTP @ 2d6e16c7;第1行,第1545行]的START_ARRAY令牌中反序列化org.json.JSONArray實例(通過參考鏈:xyzMyClass [“ var2”])”

也許我現在太累了,無法發現錯誤...

我認為您需要MySubClass或JsonArray的列表。 因為在字符串中您具有:

"var2": [{"subvar1": "1"},{"subvar1": "2"}]} 

這是一個集合。 因此,在您的MyClass中,您應該具有:

 public class MyClass {

    protected String var1;
    protected List<.....> var2;
 }

我希望這個能幫上忙!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM