gpt4 book ai didi

java - 如何将多个参数移动到 jackson 中的另一个节点?

转载 作者:行者123 更新时间:2023-12-02 02:03:02 26 4
gpt4 key购买 nike

我必须从对象生成奇怪的 json(使用 jackson ObjectMapper),例如:

{
"data":{
"id":"1",
"name":"Json"
},
"userType":"MD"
}

但是,使用 jackson 数据绑定(bind)我只能做:

{
"id":"1",
"name":"Json",
"userType":"MD"
}

使用 User.class:

public class User {
private String id;
private String name;
private String userType;

//Getters Setters Constructor

我发现了两种绕过方法。第一个 - 使用另一个“父类(super class)”:

public class Data {
@JsonProperty("data")
private User user;
private String userType;
//Getters Setters Constructor

第二种方式 - 使用 map :

Map<String, Object> map = new HashMap<>();
map.put("data", user);
map.put("userType", "MD");
String json = objMapper.writeValueAsString(map);

但我认为,如果我有大约 8 个具有这种结构的不同对象,那么使用这种方式并不理想。那么,最好的做法是什么?或者也许还有其他内置方式?我想找到最好的一个

最佳答案

您提到的第一种方法是最佳实践,但它被称为组合(HAS-A 关系)而不是“父类(super class)”,只是为了增加可读性,您可以像这样重构您的类:

public class User {
private Data data;
private String userType;

//Getters Setters Constructor
}


public class Data {

private String id;
private String name;
// getters and setters
}

所以,当你将 pojo 编码为 json 时,结构将是:

{
"data":{
"id":"1",
"name":"Json"
},
"userType":"MD"
}

这就是你想要的!快乐编码:)

更新:如果您使用 Swagger 或 Open API Spec 生成 API 文档,那么如果您使用 Map 或 HashMap,则无法表示您的模型。因此,显然,第一种方法是您应该考虑的方法!

关于java - 如何将多个参数移动到 jackson 中的另一个节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51274606/

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