我正在墨西哥使用加密货币的公共API:https://api.bitso.com/v3/available_books/,它返回的json如下:
"success": true,
"payload": [
{
"book": "btc_mxn",
"minimum_price": "500.00",
"maximum_price": "16000000.00",
"minimum_amount": "0.000075",
"maximum_amount": "500.00000000",
"minimum_value": "5",
"maximum_value": "10000000.00"
},
{
"book": "eth_btc",
"minimum_price": "0.00000100",
"maximum_price": "5000.00000000",
"minimum_amount": "0.00000100",
"maximum_amount": "1000.00000000",
"minimum_value": "0.00000100",
"maximum_value": "2000.00000000"
},
和通过Webclient使用它的代码是:
@Override
public Mono<Coins> getCoins() {
return webClient.get().uri("https://api.bitso.com/v3/available_books/")
.accept(MediaType.APPLICATION_JSON)
.retrieve().bodyToMono(Coins.class);
}
试图绑定它的POJO是:
@Data
public class Coins {
@JsonProperty("success")
private String success;
@JsonProperty("playload")
private List<Coin> playload;
和
@Data
public class Coin {
@JsonProperty("book")
private String book;
@JsonProperty("minimum_amount")
private String minimumAmount;
@JsonProperty("maximum_amount")
private String maximumAmount;
@JsonProperty("minimum_price")
private String minimumPrice;
@JsonProperty("maximum_price")
private String maximumPrice;
@JsonProperty("minimum_value")
private String minimumValue;
@JsonProperty("maximum_value")
private String maximumValue;
到目前为止,它只这样映射
"success": true,
"payload": null
答案 0 :(得分:0)
我认为这不是WebFlux问题,而是Jackson + Lombok问题。
如果您尝试使用原始ObjectMapper
反序列化该有效负载,会发生什么情况?
我认为Jackson要求使用所有带有@JsonCreator
注释的args构造函数,或者要求Lombok为该类创建一个@NoArgConstructor
。在任何情况下,都可以将Coin
类重写为常规Java类。
此外,您的Coins
类有一个错字,因为它试图获取playload
而不是payload
。
答案 1 :(得分:0)
您需要使用no-args构造,并将单词playload
更改为payload
:)
答案 2 :(得分:0)
已修复:在属性名称playload而不是有效载荷上输入错字