[{“ID”:“hzQ8ll”,“CreationDate”:“星期四,2011年2月24日12:53:31 GMT”,“伯爵”:6,“姓名”:“SOMETAG”}]
内部属于Tag
类型,所以我只写了这个Java类:
public class Tags {
public List <Tag>tags;
}
但我得com.sun.jersey.api.client.ClientHandlerException
:
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of com.test.Tags out of START_ARRAY token
我正在使用泽西这样的JacksonJsonProvider
:
ClientConfig config = new DefaultClientConfig();
config.getClasses().add(JacksonJsonProvider.class);
然后我只是做一个简单的泽西客户电话:
ClientResponse response = builder.get(ClientResponse.class);
Tags tags = response.getEntity(Tags.class);
有什么想法吗?大多数时候,我最外面的元素都有一个与之相关的名称,所以这对我来说是新的。谢谢你的帮助
答案 0 :(得分:3)
您可能需要声明Tag[]
而不是List<Tag>
。
我在使用不同的JSON库时遇到了类似的问题。
这似乎与内省容器的困难有关。
你有一个奇怪的用法get()。
返回和参数类型应该相同。
或者:
ClientResponse resp = builder.get(ClientResponse.class);
或
Tag[] resp = builder.get(Tag[].class);
无论如何,似乎问题是你的JSON数据是一个数组,并且它被反序列化为不是(Tags)的东西。
直接试试:
Tag[] tags = response.getEntity(Tag[].class);