我有一个休息终点,它返回List<VariablePresentation>。我正在尝试将此其余端点测试为
List<VariablePresentation>
@Test public void testGetAllVariablesWithoutQueryParamPass() throws Exception { final ClientRequest clientCreateRequest = new ClientRequest("http://localhost:9090/variables"); final MultivaluedMap<String, String> formParameters = clientCreateRequest.getFormParameters(); final String name = "testGetAllVariablesWithoutQueryParamPass"; formParameters.putSingle("name", name); formParameters.putSingle("type", "String"); formParameters.putSingle("units", "units"); formParameters.putSingle("description", "description"); formParameters.putSingle("core", "true"); final GenericType<List<VariablePresentation>> typeToken = new GenericType<List<VariablePresentation>>() { }; final ClientResponse<List<VariablePresentation>> clientCreateResponse = clientCreateRequest.post(typeToken); assertEquals(201, clientCreateResponse.getStatus()); final List<VariablePresentation> variables = clientCreateResponse.getEntity(); assertNotNull(variables); assertEquals(1, variables.size()); }
该测试失败,错误提示
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token(..)
如何解决此问题?
这看起来像杰克逊(Jackson)错误,它期望解析一个数组(以“ [”开头),但遇到一个对象(“ {”)的开头标记。通过查看您的代码,我猜测它正在尝试将JSON反序列化到您的List中,但它正在获取对象的JSON。
您的REST端点返回的JSON是什么样的?它应该看起来像这样
[ { // JSON for VariablePresentation value 0 "field0": <some-value> <etc...> }, <etc...> ]