2013-05-17 105 views
0

我正在對Jackson進行一個非常簡單的測試。我有一個類,並使用它的對象作爲澤西方法的參數和返回值。 類是:將JSON反序列化爲Java對象包含使用Jackson的集合

import java.util.List; 

public class TestJsonArray { 

    private List<String> testString; 

    public List<String> getTestString() { 
     return testString; 
    } 

    public void setTestString(List<String> testString) { 
     this.testString = testString; 
    } 
} 

我有嘗試將一個字符串添加到列表中測試串

@Path("/arrayObj") 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public Object createObjectArray(@QueryParam("param") String object) throws JsonGenerationException, JsonMappingException, IOException { 
     ObjectMapper objectMapper = new ObjectMapper(); 
     TestJsonArray convertValue = objectMapper.convertValue(object, TestJsonArray.class); 
     convertValue.getTestString().add("hello"); 
     return objectMapper.writeValueAsString(convertValue); 
    } 

當我把這種方法與參數

{澤西方法「testString」:[「Hi」]}

我收到一個異常:

java.lang.IllegalArgumentException: Can not construct instance of test.rest.TestJsonArray, problem: no suitable creator method found to deserialize from JSON String 
at [Source: N/A; line: -1, column: -1] 

的異常在反序列化PROCESSS拋出:

TestJsonArray convertValue = objectMapper.convertValue(對象, TestJsonArray.class);

我想知道爲什麼會引發這個異常。我究竟做錯了什麼?

+0

您是否創建了'TestJsonArray'只是爲了容納'ArrayList'?或者它包含其他字段? – sanbhat

+0

這只是我真正的應用程序的測試表單。我真正的應用程序也包含其他字段 – pokeRex110

回答

4

嘗試ObjectMapperreadValue方法,而不是convertValue

objectMapper.readValue(json, TestJsonArray.class); 

這應該工作。

+0

我想我在做:'TestJsonArray convertValue = objectMapper.convertValue(object,TestJsonArray.class);'。我已經測試了它也與輸入爲JSONObject,但仍然無效 – pokeRex110

+1

不使用'convertValue'它拋出異常,使用'readValue'方法。看我的帖子。 – sanbhat

+0

你的回答是正確的。 )。謝謝 – pokeRex110

相關問題