[英]Jackson: deserialize any json
这应该不会太难……但我似乎瞎了,自己也找不到答案。
使用 Jackson 我想反序列化 Java Map 中的任何** JSON。 Array
部分正在制造麻烦。
任何json 可能看起来像: { "foo": "bar" }
或{ "test": [ { "a": 123, "b": "erny" }, { "a": ... and so on
这些应该在(伪代码)中反序列化:
Map( foo => "bar" )
Map( test => Array(
Map( a => 123, b=>erny ),
Map( a => ... and so on
) )
我不太关心数组和映射的类型,只要它们是,也不关心值的类型。 (但如果整数这样表示会很好)。
如果我尝试om.readValue( json, Map.class )
如果 json 包含一个数组om.readValue( json, Map.class )
我会从 START_ARRAY错误中得到无法反序列化java.lang.String
实例。
我在所有复杂的 JSON 内容中都非常成功地使用 Jackson,但如何做简单的呢?
注意:Jackson 使用上面的语法完成了我想要它做的事情。 问题是我的 json 中的一个错误。 所以这个问题没有意义。
**) any并不完全正确。 我使用的每个 JSON 都是最低级别的地图。
Jackson 可以将 JSON 对象反序列化为java.util.Map
,将 JSON 数组反序列化为java.util.List
从您的错误消息来看,您似乎正在尝试将 JSON 数组反序列化为 java.util.Map,这是不可能的。
@JsonAnyGetter public Map<String, Object> getOtherInfo() { return otherInfo; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.