org.codehaus.jackson.JsonParseException:意外的字符('/'(代码47))

Dav*_*ave 7 java json hashmap

我有一个包含json格式的HashMap客户列表的文件.

像这样:

{"Davide":{"name":"Davide","cf":"FRCDVD","pi":"1234",
    "telephone":"333","website":"www","sector":"Student","address":"Rome"}}
Run Code Online (Sandbox Code Playgroud)

这只是列表的一个客户.每次调用控制器时,我都想从文件中获取数据并将它们转换为HashMap列表.

我尝试这样做:

HashMap<String, Customer> listCustomer = new HashMap<>();
listCustomer = new ObjectMapper().readValue(pathCustomerFile, HashMap.class); //This line gives me error
Run Code Online (Sandbox Code Playgroud)

我收到了这个错误:

org.codehaus.jackson.JsonParseException:意外字符('/'(代码47)):也许是(非标准)评论?(因为功能'ALLOW_COMMENTS'未启用解析器而未被识别为一个)

我怎样才能做到这一点?

Ste*_*eve 16

我最近遇到过这个问题.我试图将路径(以字符串的形式)传递给readValue.您需要将其传递给要解析的字符串或文件对象.基于您的变量名称我认为您可能已将其传递给文件的路径.

(基本上,它正在读取文件路径中的'/'并在它们上面抛出错误.


zbi*_*big 1

请仔细检查您输入的 JSON 字符串,确保它没有被错误地转义或/悬挂在某处。例如/\"name\"。然后提供正确的类型映射:

new ObjectMapper().readValue(pathCustomerFile, new TypeReference<HashMap<String, Customer>>(){});
Run Code Online (Sandbox Code Playgroud)

我的答案是用 jackson-mapper-asl 1.9.13 进行测试的。

** 你的映射HashMap.class不会给你想要的结果,因为 Jackson 会将你的 JSON 映射到Map<String, Map>. 当您尝试从 Map 获取值并像 Customer 类型一样进行操作时,您会发现。