当前位置: 首页 > 知识库问答 >
问题:

Jackson ObjectMapper将值读入特定Java对象

孔建柏
2023-03-14

特别是Java类不是我自己的(它是一个依赖项),所以我不能修改它。作者对类的想法是使用Builder模式构造对象,并且没有提供默认的构造函数。

为了避免这个问题,我想我需要创建一个适配器类。然后,我将通过使用序列化的适配器对象并填充构建器来构建我的对象。

有没有更干净的方法可以做到这一点?如果ObjectMapper提供了从流读取到特定对象的方法,我就可以使用生成器生成一个空对象,然后用Jackson填充它...

共有1个答案

符修杰
2023-03-14

这只是@steve11235评论的扩展版本。

这不是一个适配器,它只是一个变通办法。

  1. 创建与JSON格式匹配的类;我将称之为blammy
  2. blammy类中包含一个方法,为所需的实际类填充生成器;我将其称为blammy.builderate(DesiredBuilder)
  3. 使用jackson将JSON反序列化为blammy类。
  4. 反序列化后,创建所需的生成器并将其传递给blammy.builderate()方法。
 类似资料:
  • 我的应用程序收到大量传入的 HTTP 请求。在每个请求的标头中,都有一个键值对。 说出标题1=应用程序1 值App1不断变化。 所以接下来它可以是App2、App3等等。 .但是,这些值可以按任何顺序继续出现。我需要处理竞争条件,其中如果出现 App1 的多个请求,我获得 reentrantreadwritellock 在App1上。同时,如果我收到对App2的请求,我将获取App2的重入读写锁。

  • 如果这一行文本没有以方括号开头,我想把这一行连接到上面的一行。我可以读它在正常使用这个代码。我试着用String.StartsWith但是我搞不懂。 我正在寻找对此方法的更改,以使它以我想要的格式读取它,或者可能是一个将作用于我的并对此问题排序的方法。谢谢

  • 在我向Maven添加了HATEOAS的依赖项之后,Spring Boot不会启动: 添加得依赖项: unsatisfiedDependencyException:创建名为“Security Config”的bean时出错:通过方法“Set ContentNegotationStrategy”参数0表示的不满足依赖项;嵌套异常为org.springframework.beans.factory.un

  • } PS,arrayList中的内容插入到程序中的某个点,因此arrayList不是空的。

  • 出于教育目的,我正在研究Java值对象。 我不明白的是,为什么没有人(异口同声)提到Java值对象实现可比性? 如果Java值对象必须具有"正确的"HashCode 这是我的思考过程。将测试值对象的实例是否相等,因此它们需要正确的equals/hashcode。值对象可以存储在“hash”集合中,这也是Hashcode方法所需要的。那么,为什么不添加Compariable以便它们可以成为有序集合中

  • } 我想从这个json对象中获取值。 我在下面试过了,但没有成功。