我正在从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]
posts
是array
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字符串字段应该具有的"
。
我能做些什么来克服这个问题?
答案 0 :(得分:1)
您遇到了设计问题,并且正在以错误的方式解决问题。
Maps<String, Object>
。这将允许利用实例的OO功能,而不是通过转换访问属性(您没有这样做,请参见第2点)。 要解决您的直接问题,您无法从非JSON Object
反序列化,这是您在为posts
分配值时尝试执行的操作。相反,尝试以下几行:
Post[] posts = (Post[])map.get("posts");