繁体   English   中英

返回 API 调用时更改 POJO 结构

[英]Changing POJO structure on returning to API call

我已经为我的 POJO 类分配了值,以作为 API 调用的响应主体返回。 我想更改我的 POJO 结构,例如将 POJO 作为 POJO 之上对象的值。

例如:

首页 POJO:

{
    int number;
    String address;
}

值已分配给 POJO,我可以将其作为响应主体发送到我的 API 调用,但我希望我的响应主体是:

{
  output: {
      number: 1,
      address: "chennai"
    }
}

我知道我可以使用 JSON-Object 或使用HashMap或父 POJO 来实现此目的(注意:不想仅为这种情况创建 POJO Output )。

有没有其他方法可以像这样使用 Jackson 或任何其他 Java 与 Spring 的方法来序列化 POJO?

您可以在您的类上应用@JsonRootName注释,指定"output"作为它的值。

@JsonRootName("output")
public class MyPojo {
    private int number;
    private String address;
    
    // all-args constructor, getters, etc.
}

但是这个注释本身不会对序列化产生任何影响。 为了指示 Jackson 使用它,我们需要启用序列化功能WRAP_ROOT_VALUE

可以启用使根值(通常是 JSON 对象,但可以是任何类型)包装在单个属性 JSON 对象中的功能,其中键为“根名称”,...

使用示例:

ObjectMapper mapper = new ObjectMapper();
mapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
        
System.out.println(
    mapper
        .writerWithDefaultPrettyPrinter()
        .writeValueAsString(new MyPojo(1000, "foo"))
);

输出:

{
  "output" : {
    "number" : 1000,
    "address" : "foo"
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM