我有一些看起來像這樣的 json 物件:
{
"make":"Volvo",
"model":"240",
"metadata":{
"color":"white",
"year":"1986",
"previousOwner":"Joe",
"condition":"good"
}
}
我想把這個 JSON 變成List<Car>,它由以下物件組成:
public class Car {
private String make;
private String model;
private CarMetadata carMetadata;
}
public class CarMetadata {
private Body body;
private History history;
}
public class Body {
private String color;
private String condition;
}
public class History {
private String previousOwner;
private String year;
}
所以本質上關鍵是我想把它變成(汽車)的物件是非常嵌套的,而我的 JSON 不是非常嵌套。實際上,“汽車”物件實際上比我展示的這個例子嵌套得更多。
我在想兩個選擇:
創建一個 CarDTO 物件來表示我的輸入 JSON,
objectMapper.readValue(json, CarDTO.class)然后將 CarDTO 映射到 Car 以創建我的List<Car>.只需決議 JSON 并
List<Car>首先創建最終物件。
我不想創建不必要的 DTO,但我也不想弄亂決議這個 JSON。
在這種情況下是否有最佳實踐,這甚至是對 DTO 的有效使用嗎?
uj5u.com熱心網友回復:
使用 DTO。
盡管您可以從 json 直接反序列化到您的域類,但它們的結構不同,因此您必須創建自定義反序列化器......不要在家里嘗試這個。我去過那里,完全不值得麻煩。
使用 DTO 將 json 決議為 POJO,然后將 DTO 映射到域物件。
這將使傳輸與您的域物件分離,允許兩者自由更改,僅影響映射代碼。它也更容易撰寫、理解、測驗和除錯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/461354.html
