JsonMappingException没有单字符串构造函数/工厂方法Jackson
问题内容:
我正在尝试使用Spring build Jackson支持在Controller中解析从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格式,它似乎有效,而tryin gto解析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
课程包含for的简单属性productCode
,categoryCode
等等,没有参数构造函数
问题答案:
如评论所述,您的JSON包含Map<String,String>
和NOT
Map<String,CartDataHelper>
:值是JSON字符串,而不是JSON对象。
理想情况下,您不要尝试将对象写为JSON字符串;如果是这样,事情就会奏效。