簡體   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