【发布时间】:2012-09-29 09:42:58
【问题描述】:
我正在尝试使用 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 数据看起来像是被双重转义了。所以虽然它可能是有效的,但我认为它并不代表你认为它的作用。它表示一个具有两个属性(“0”和“1”)的对象,每个属性的值看起来像 JSON 编码的对象,表示为字符串。
-
@Ramon:有没有办法改变结构来满足这个要求?
-
这取决于产生它的代码,我猜。
-
您是如何创建 JSON 数据的?你能证明一下吗?
标签: java json spring-mvc jackson