TL; DR
当输入有时是序列化的JSON而有时是非JSON字符串时,如何使Jackson的ObjectMapper
用于反序列化对象?
详细信息
我是Java / Jackson的新手,整天都为此而烦恼。
我正在使用用户ObjectMapper反序列化输入的系统的环境中工作。我对Jackson的注释很熟悉,可以使它起作用。当输入是序列化的JSON时没有问题。
问题是正在为我提供各种输入,其中一些未序列化JSON。我已经看到了与多态反序列化有关的答案,其中序列化的JSON可能以多种形式之一出现。那根本解决不了如何处理未序列化JSON的输入的问题。
我尝试使用@JsonDeserialize
指定扩展StdDeserializer
和JsonDeserializer
的自定义解串器。两种情况下的问题都是,传递到JsonParser
或deserialize
方法中的deserializeWithType
在到达我的代码之前会处理输入字符串,因此对于非JSON输入,结果是JsonParseException
。
那么,有没有办法解决这个问题?我正在一个较大的系统中工作,希望ObjectMapper
可以完成工作,并且在可能的情况下,我不希望更改系统的这一方面。