我正在尝试将Json映射到POJO,但我得到了这个例外:
这是我的代码:
ObjectMapper mapper = new ObjectMapper();
try {
InputStream is = getActivity().getAssets().open("user.json");
List<MessageCenterResponse> mcr = (List<MessageCenterResponse>) mapper.readValue(content, MessageCenterResponse.class);
System.out.println(mcr);
}
catch (IOException ex) {
ex.printStackTrace();
}
我收到以下异常:
org.codehaus.jackson.JsonParseException: Unexpected character ('a' (code 97)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')
at [Source: java.io.StringReader@41e86930; line: 1, column: 2]
是否与类型问题有关?
答案 0 :(得分:2)
InputStream
类从实现它的toString()
继承其Object
方法(Oracle JDK 7)
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
换句话说,它不会读取流并将内容作为String
返回。
您需要自己使用any number of techniques for reading from an InputStream
。或者将InputStream
直接传递给ObjectMapper
方法。
List<MessageCenterResponse> mcr = mapper.readValue(is, new TypeReference<List<MessageCenterResponse>>() {});