如何使用 Jackson 映射未知的变化场

问题描述 投票:0回答:1

我有以下 JSON

{
    "success": true,
    "timestamp": 1519296206,
    "base": "USD",
    "date": "2021-03-17",
    "rates": {
        "GBP": 0.72007,
        "JPY": 107.346001,
        "EUR": 0.813399,
    }
}

如何将其序列化为java对象?我已经创建了该对象:

import lombok.Getter;
import lombok.Setter;

@Getter
@Setter
public class CurrencyExchangeRateResponse {
    private Boolean success;
    private Boolean historical;
    private String date;
    private long timestamp;
    private String base;
    private List<Rate> rates;
}


public enum Currency {
    AUD,
    GBP,
    HKD,
    // Other currency codes
}


@Getter
@Setter
public class Rate {
    private Currency currency;
    private Double value;
}

但是在反序列化过程中出现以下错误:

Caused by: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type `java.util.ArrayList<com.ceg.platform.currency.impl.Rate>` from Object value (token `JsonToken.START_OBJECT`)

从上面的错误可以看出,导致错误的部分是:

"rates": {
    "GBP": 0.72007,
    "JPY": 107.346001,
    "EUR": 0.813399,
}
java enums jackson
1个回答
0
投票

原因很简单,json rates 是对象,而不是数组

© www.soinside.com 2019 - 2024. All rights reserved.