使用Jackson在Java中将JSON字符串转换为映射时出错
我有这段代码,我正在尝试将JSON字符串转换为映射使用Jackson在Java中将JSON字符串转换为映射时出错,java,json,dictionary,hashmap,jackson,Java,Json,Dictionary,Hashmap,Jackson,我有这段代码,我正在尝试将JSON字符串转换为映射 String json = "[{'code':':)','img':'<img src=/faccine/sorriso.gif>'}]"; ObjectMapper mapper = new ObjectMapper(); Map<String,String> userData = mapper.readValue(json,new TypeReference<HashMap<String,String&
String json = "[{'code':':)','img':'<img src=/faccine/sorriso.gif>'}]";
ObjectMapper mapper = new ObjectMapper();
Map<String,String> userData = mapper.readValue(json,new TypeReference<HashMap<String,String>>() { });
我做错了什么?我记得Jackson是用来将json转换成java类的——它可能期望第一个对象是一个映射,比如
String json = "{'code':':)','img':'<img src=/faccine/sorriso.gif>'}";
String json=“{'code':':)”,'img':'''}”;
正确:您要求Jackson将JSON数组映射到对象中;没有明显的方法可以做到这一点。所以,托法尔的答案是正确的
但如果您想要列表或数组,可以通过以下方式轻松实现:
List<?> list = mapper.readValue(json, List.class);
List List=mapper.readValue(json,List.class);
或具有完整的类型参考;在这种情况下是可选的,因为您只需要列表、映射和字符串。现在可以了,但我必须像这样使用双引号:String json=“{\'code\':\”:)\”,\“img\':\”;是的,JSON要求属性名使用双引号(尽管包括Jackson在内的一些解析器允许使用非标准模式,这会放宽限制)
List<?> list = mapper.readValue(json, List.class);