jackson-core:依赖对,其中类型族存在于 Json 数据中的量词之前



我有一些传入的JSON(其字段顺序不是我的选择),它嵌入了一个依赖对:

{
"data": {...},
"evt": "READY",
...
}

我应该读data什么类型取决于evt的值。只需JsonParser这是不可能的,因为无法存储data以供以后使用,以便在达到evt后可以将其恢复。

我正在解析的所有数据(不幸的是)都已经存在于ByteBuffer中,那么有没有比JsonParser更好的接口?如果可以提供帮助,我不想引入比jackson-core更多的依赖项。

看起来没有任何额外的依赖项就没有简单的方法可以实现这一点。

我想,您需要添加至少jackson-databind(如果不通过 Maven/Gradle 自动添加,也需要添加jackson-annotations)。 然后,您可以使用ObjectMapper作为解析器的ObjectCodec,并将完整的 JSON 解析为稍后可以部分解析为正确类型的TreeNode结构,或者 - 如果您有所有类型的数据的对象 - 您可能可以直接解析具有匹配数据类型的完整对象。如果需要,可以实现自定义ObjectCodec,首先收集未知数据,然后在类型已知时对其进行处理,但实现ObjectCode似乎并不容易。

您可以使用 GSON 代替 Jackson,它可以将数据解析为完整的对象结构或通用 JSON 对象树,而无需任何其他依赖项。

如果您真的无法添加其他依赖项,那么您可以使用JsonParser.nextToken实现类似 SAX-XML-Parser的逻辑,但我想这需要很多自定义逻辑。

最新更新