Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jackson在Java中将JSON字符串转换为映射时出错_Java_Json_Dictionary_Hashmap_Jackson - Fatal编程技术网

使用Jackson在Java中将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&

我有这段代码,我正在尝试将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>>() { });

我做错了什么?

我记得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);