使用Jackson从URL映射JSON

时间:2014-05-30 10:27:51

标签: java json jackson

enter image description here我正在从url解析一个JSON字符串。从这个URL我想只映射一定数量的Items,所以我使用 Jackson 解析它。

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(new URL(urls.get(i)), Map.class);

...现在我的Hashmap包含以下密钥集:

 [status,count,pages,category,posts]

postsarray Object我已经定义了映射class

所以当我尝试像这样解析它们时:

post[] posts= mapper.readValue(map.get("posts").toString(),post[].class);

我得到了Exception

Unexpected character ('i' (code 105)): was expecting double-quote to start field name

根据我的理解,当我执行第一个映射时,它会带走JSON字符串字段应该具有的"

我能做些什么来克服这个问题?

1 个答案:

答案 0 :(得分:1)

您遇到了设计问题,并且正在以错误的方式解决问题。

  1. 您应该将JSON反序列化为自定义对象而不是 Maps<String, Object>。这将允许利用实例的OO功能,而不是通过转换访问属性(您没有这样做,请参见第2点)。
  2. 要解决您的直接问题,您无法从非JSON Object反序列化,这是您在为posts分配值时尝试执行的操作。相反,尝试以下几行:

    Post[] posts = (Post[])map.get("posts");