繁体   English   中英

Jackson:反序列化任何 json

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM