![](/img/trans.png)
[英]Spring Boot - WebClient - multipart response - How to get the binary data
[英]How to get a select JSON fields by name using Spring Boot WebClient?
I'm using WebClient in Java to retrieve the JSON data, but I'm fairly new to JSON and Spring, so I'm not sure how to proceed from here. 我想遍歷 JSON 數據並查找 ProductId 包含“衣服”的產品並將 ProductId 和 ProductName 存儲在列表中。 如何遍歷 JSON 數據並僅檢查字段 ProductId 和 ProductName?
[
{
"ProductType": "Food",
"ProductName": "Vineyard Tomatoes",
"ProductId":"Food-127483"
"InventoryCount": 128
},
{
"ProductType": "Clothes",
"ProductName": "Sweaters",
"ProductId":"Clothes-2183"
"InventoryCount": 229
},
{
"ProductType": "Clothes",
"ProductName": "Jeans",
"ProductId":"Clothes-482"
"InventoryCount": 150
},
{
"ProductType": "Misc",
"ProductName": "Clocks",
"ProductId":"Misc-8288"
"InventoryCount": 24
}
]
String url = inventoryURI //url to the api with the inventory data
List<Products> productList = new ArrayList<>();
WebClient webClient = WebClient.create();
Products[] product = webClient.get().uri(url)
.accept(MediaType.APPLICATION_JSON)
.retrieve
.bodyToMono(Products[].class)
.block();
如果您使用的是spring-webflux
,則應避免使用.block()
。
以下是從 JSON 檢索字段的一些方法:
Mono<List<Products>> products = WebClient.create().get()
.uri(url)
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(String.class)
.map(jsonData -> {
return convertJsonToProducts(jsonData);
});
A. 通過 Gson 庫的方法convertJsonToProducts
。
public List<Products> convertJsonToProducts(String jsonData) {
List<Products> products = new ArrayList<Products>();
Gson gson = new Gson();
Products[] productArrays = gson.fromJson(jsonData, Products[].class);
if(productArrays!=null && productArrays.length>0) {
products = Arrays.asList(productArrays);
}
return products;
}
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
B. 通過 Jackson 庫的方法convertJsonToProducts
。
public List<Products> convertJsonToProducts(String jsonData) {
List<Products> products = new ArrayList<Products>();
ObjectMapper mapper = new ObjectMapper();
Products[] pp1 = mapper.readValue(jsonData, Products[].class);
if(productArrays!=null && productArrays.length>0) {
products = Arrays.asList(productArrays);
}
return products;
}
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.11.2</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.