gpt4 book ai didi

java - jackson 能否处理好中间关系

转载 作者:行者123 更新时间:2023-12-01 09:09:55 25 4
gpt4 key购买 nike

假设我有亲子关系。我的父级 json 看起来像

{
childrens: [...]
}

假设我想要序列化(反序列化)的模型在父级和子级之间有一个中间对象。

class Parent {
Intermediate intermediate
}

class Intermediate {
Child[] children;
}

我可以配置 Jackson 在将 json 反序列化到模型时创建该中间对象,并在序列化回 json 时类似地跳过中间对象吗?

最佳答案

对于这种情况,您可以使用@JsonUnwrapped注释。这是一个与您的帖子结构相似的示例

Parent.java

import com.fasterxml.jackson.annotation.JsonUnwrapped;

public class Parent {

@JsonUnwrapped
private Intermediate intermediate;

public Intermediate getIntermediate() {
return intermediate;
}

public void setIntermediate(Intermediate intermediate) {
this.intermediate = intermediate;
}
}

中级.java

public class Intermediate {
private Child[] children;

public Child[] getChildren() {
return children;
}

public void setChildren(Child[] children) {
this.children = children;
}
}

Child.java

public class Child {
private String name;
private Integer age;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

示例文档

{
"children": [
{
"name": "Foo",
"age": 20
},
{
"name": "Bar",
"age": 22
}
]
}

测试驱动程序

ObjectMapper mapper = new ObjectMapper();
Parent parent = mapper.readValue(json, Parent.class);

for (Child child : parent.getIntermediate().getChildren()) {
System.out.println("Child: " + child.getName() + " is " + child.getAge() + " years old.");
}

产生以下输出:

Child: Foo is 20 years old.
Child: Bar is 22 years old.

关于java - jackson 能否处理好中间关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40983818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com