我正在尝试使用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
类包含productCode
、categoryCode
等具有无参数构造函数的简单属性
如注释所述,您的JSON包含Map<String,String>
和NOTMap<String,CartDataHelper>
:值是JSON字符串,而不是JSON对象。
理想情况下,您不会尝试将对象写成JSON字符串;如果是这样的话,一切都会好起来的。
在客户端,json似乎是作为字符串而不是作为对象发送的。这样,在服务器端,您收到的是一个字符串,而不是您假装的CartDataHelper。
尝试发送JSON.parse(stringCartDataHelper)
。这对我来说同样有效。