首页 > 解决方案 > 映射棘手的json的聪明方法

问题描述

我有下面的 json,我正在寻找智能方法来为 java 对象映射它。直到现在我尝试了这种方式,但它没有帮助。

JSON:https ://pastebin.com/NBCGXgUD

这是我试过的

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class TravelpayoutsResponse {
    private boolean success;
    private TravelpayoutsData data;
    private String error;
    private String currency;
}

@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class TravelpayoutsData {
    private FlightDetails flightDetails[];
}

@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class FlightDetails {
private FlightDetail[] flightDetails;
}

@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class FlightDetail {
    private int price;
    private String airline;
    @JsonProperty("flight_number")
    private String flightNumber;
    @JsonProperty("departure_at")
    private String departureDate;
    @JsonProperty("return_at")
    private String returnDate;
    @JsonProperty("expires_at")
    private String expirationDate;
}

但这对我没有用。也许你知道如何映射它?我会非常感激

标签: javajsonserializationjackson

解决方案


JSON 中没有任何数组。

@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@JsonIgnoreProperties(ignoreUnknown = true)
public class TravelpayoutsResponse {
    private boolean success;
    private Map<String, Map<String, FlightDetail> data;
    private String error;
    private String currency;
}

@Getter
@Setter
@JsonIgnoreProperties(ignoreUnknown = true)
public class FlightDetail {
    private int price;
    private String airline;
    @JsonProperty("flight_number")
    private String flightNumber;
    @JsonProperty("departure_at")
    private String departureDate;
    @JsonProperty("return_at")
    private String returnDate;
    @JsonProperty("expires_at")
    private String expirationDate;
}

推荐阅读