【发布时间】:2017-01-24 09:48:37
【问题描述】:
我有一个像
这样的 JSON 对象{
"id" : "1",
"children" : ["2","3"]
}
我有一个类似的 Java 对象(构造函数、getter 和 setter 被省略):
public class Entity {
public String id;
public String children;
}
我希望通过这段代码使用 Jackson 将此 JSON 反序列化为我的 Java 对象:
Entity entity = mapper.readValue(json, Entity.class);
但是得到以下错误:
Can not deserialize instance of java.lang.String out of START_ARRAY token
如何在不更改 children 字段类型的情况下解决它?
children 字段应具有以下值:["2","3"]。
【问题讨论】:
-
你能把
children的类型改成List<String>吗? -
如果你不想改变类型,你想如何存储 "children":["2","3"] ?你只想要第一个值?
-
我想要类似 "["2","3"]" 的东西(引号可以带反斜杠)
-
所以你需要发送像 "children":"[2,3]" 这样的 json,如果可以的话,否则你需要创建和注册自定义映射器
-
我不认为你可以用标准映射器做到这一点,编写自定义映射器
标签: java json serialization jackson