尝试映射Json时出现JsonParseException

时间:2014-03-13 19:50:13

标签: java android json jackson

我正在尝试将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]

是否与类型问题有关?

1 个答案:

答案 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>>() {});