gpt4 book ai didi

java - 如何为复杂对象创建不同的 JSON 输出

转载 作者:行者123 更新时间:2023-12-02 00:34:51 25 4
gpt4 key购买 nike

我想根据用例为同一个复杂的 Java 对象生成不同的 Json 输出。

例如检查以下代码:

class Employee {
private Long id;
private String name;
private EmployeeDetail detail;
private Department department;
...
}

class Department {
private Long id;
private String name;
private String address;
...
}

class EmployeeDetail {
private Long id;
private int salary;
private Date birthDate;
...
}

如果我将 Employee 转换为 Json,则 Employee、EmployeeDetail 和 Department 中的所有字段都将出现。它非常适合一种用例。

但是,在第二个用例中,我想跳过除 id 字段之外的部门详细信息,但保留完整的 EmployeeDetail。

我知道我可以将类似的 @JsonView(EmployeeView.Basic.class) 添加到 Department 类中的 id 字段,并且使用 Json View 。然而,为了更清晰的代码,我想在 Employee 类中解决它,如下所示:

class Employee {
private Long id;
private String name;

@JsonAllFields
private EmployeeDetail detail;

@JsonIdOnly
private Department department;
...
}

目前我使用 Jackson 库,但可以根据需要进行切换。

最佳答案

我认为你可以使用 com.fasterxml.jackson.annotation。

@JsonIgnore 用于忽略序列化和反序列化中使用的逻辑属性。 @JsonIgnore 可以用在 setter、getter 或 field 处。您可以在部门类中除 ID 之外的字段中使用它。有很多方法可以做到这一点。您可以在序列化等中允许唯一的 getter。

示例:

@JsonIgnore(false)
private String id;

或者

@JsonIgnoreProperties({ "bookName", "bookCategory" })
public class Book {
@JsonProperty("bookId")
private String id;

@JsonProperty("bookName")
private String name;

@JsonProperty("bookCategory")
private String category;

}

了解更多请引用:https://www.concretepage.com/jackson-api/jackson-jsonignore-jsonignoreproperties-and-jsonignoretype

我希望这会有所帮助。

关于java - 如何为复杂对象创建不同的 JSON 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57988237/

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