[英]Multiple DTOs manual initialize
在微服務中,我們將多個 dto 數據發布為字符串 json。
Controller:
@RequestMapping(value="/json",method = RequestMethod.POST)
public String getjson(@RequestBody String json) {
///Service process
}
發布 Json:
{
"dtos":{
"Dto1":{
"name":"Dto1 Name Field",
"filter":[
{"key":"f1","value":1},
{"key":"f2","value":10}
]
},
"Dto2":{
"city":"Newyork",
"filter":[
{"key":"f1","value":1},
{"key":"f2","value":10},
{"key":"f3","value":10}
]
}
},
"page":1
}
DTO:
public class Dto1{
private String name;
}
public class Dto2{
private String city;
}
Dto1 和 Dto2 是 java DTO object 名稱。 如何將字符串 json 轉換為 java 對象?
您可以創建一個新的 DTO,其中包含所有 attrs 並在請求中接收:
public class Filter{
private String key;
private int value;
}
public class Dto1{
private String name;
private List<Filter> filter;
}
public class Dto2{
private String city;
private List<Filter> filter;
}
public class Dtos{
public Dto1 dto1;
public Dto2 dto2;
}
public class DtoToReceiveInRequest{
private Dtos dtos;
private int page;
}
Controller
@PostMapping
public String getjson(@RequestBody DtoToReceiveInRequest json) {
///Service process
}
您可以使用 jackson 庫中的 ObjectMapper,如下所示。
String json = "";
ObjectMapper objectMapper = new ObjectMapper();
Dto1 dto = objectMapper.readValue(json, Dto1.class);
但是在您的特定示例中,您不必有兩個 DTO 類。 您可以將值封裝在一個 DTO 中,並以 json 格式列出該 DTO 的不同實例。
注意。 json 字符串應該是您要檢索的首選 class 的表示,例如 Dto1.java。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.