JsonMappingException没有单个String构造函数/工厂方法Jackson



我正在尝试使用Spring build Jackson支持解析从控制器中的UI发送的JSON数据,这是我的代码

final Map<String, CartDataHelper> entriesToUpdateMap = new ObjectMapper().readValue(entriesToUpdate, new TypeReference<Map<String, CartDataHelper>>()

我的JSON字符串是

{"0":"{"categoryCode":"shoes","productCode":"300050253","initialQty":"3","leftoverQty":"0","newQty":"3"}",
"1":"{"categoryCode":"shoes","productCode":"300050254","initialQty":"3","leftoverQty":"0","newQty":"3"}"}

我使用一些在线服务检查了JSON格式,它似乎是有效的,在尝试解析JSON数据时,我得到了以下异常

org.codehaus.jackson.map.JsonMappingException: Can not instantiate value of type [simple type, class controllers.util.CartDataHelper] from JSON String; no single-String constructor/factory method

我的CartDataHelper类包含productCodecategoryCode等具有无参数构造函数的简单属性

如注释所述,您的JSON包含Map<String,String>和NOTMap<String,CartDataHelper>:值是JSON字符串,而不是JSON对象。

理想情况下,您不会尝试将对象写成JSON字符串;如果是这样的话,一切都会好起来的。

在客户端,json似乎是作为字符串而不是作为对象发送的。这样,在服务器端,您收到的是一个字符串,而不是您假装的CartDataHelper。

尝试发送JSON.parse(stringCartDataHelper)。这对我来说同样有效。

最新更新