如何将几个参数移动到杰克逊的另一个节点?

新建数据库

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

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

但是,使用 jackson data-bind 我只能做:

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

使用 User.class:

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

//Getters Setters Constructor

我找到了两种绕过方法。第一个 - 使用另一个“超类”:

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

第二种方式 - 使用地图:

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

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

赖由源

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

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,则无法表示您的模型。因此,显然,第一种方法是您应该考虑的方法!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何声明另一个杰克逊ObjectMapper不影响原豆的“客户”?

如何将一个元素移动到另一个元素?

如何将变量的值移动到汇编中的另一个变量

如何将Node-RED中的电线从一个节点移动到另一个节点?

如何将文件移动到vscode中的另一个文件夹?

木偶-如何将目录的内容移动到另一个现有目录?

如何将文件移动到Qt中的另一个现有目录

如何将文件移动到PHP中的另一个文件夹

如何将列移动到另一个表,以替换FK?

如何将ElementHandle移动到另一个页面

Mongodb如何将特定对象从数组移动到另一个数组?

如何将容器从一个节点移动到另一个节点?

如何将svg节点从一个组移动到另一个组?

如何将引导扇区移动到另一个驱动器?

如何将页面文件移动到另一个物理磁盘位置?

如何将文件从默认目录移动到另一个目录?

如何将加密的主目录移动到另一个分区?

如何将单个分区移动到另一个空驱动器?

如何将活动窗口移动到XFCE中的另一个显示

AppleScript:如何将邮箱移动到Apple Mail中的另一个邮箱

Cassandra:如何将整个表移动到另一个键空间

如何将多个文件夹移动到另一个目录?

如何将数据库移动到mongodb中的另一个分片

如何将 mainactivity 中的整数计算移动到另一个活动 textview?

将 html 元素从一个节点移动到另一个节点

C# - 如何将一个节点及其子节点移动到 XML 文档中的另一个位置?

如何将一个变量从一个类移动到另一个类

(Domino Notes)如何将文档从原始 NSF 移动到另一个 NSF?

在draw.io中,如何将一个节点移动到另一个节点的前面?