【发布时间】:2018-04-29 10:02:34
【问题描述】:
我想使用 Jackson 解析以下 Json,但我完全不确定应该如何构建实体。
[
CHAN_ID,
[
[
SYMBOL,
STATUS,
AMOUNT,
BASE_PRICE,
MARGIN_FUNDING,
MARGIN_FUNDING_TYPE,
PL,
PL_PERC,
PRICE_LIQ,
LEVERAGE,
...
],
...
]
]
这是我目前所拥有的:
@Getter
@Setter
@EqualsAndHashCode
@ToString
@NoArgsConstructor
public class Position {
@JsonProperty("SYMBOL")
private String symbol;
@JsonProperty("STATUS")
private String status;
@JsonProperty("AMOUNT")
private Decimal amount;
@JsonProperty("BASE_PRICE")
private Decimal basePrice;
@JsonProperty("MARGIN_FUNDING")
private Integer marginFunding;
@JsonProperty("MARGIN_FUNDING_TYPE")
private Decimal marginFundingType;
@JsonProperty("PL")
private Decimal profitLoss;
@JsonProperty("PL_PERC")
private Decimal profitLossPercentage;
@JsonProperty("PRICE_LIQ")
private Decimal liquidationPrice;
@JsonProperty("LEVERAGE")
private Decimal leverage;
}
我要解析的这个东西,似乎有一个位置数组,但在它有那个 CHAN_ID 之前,我应该为此构造某种包装类吗?
@Getter
@Setter
@EqualsAndHashCode
@ToString
@NoArgsConstructor
public class Positions {
@JsonProperty("CHAN_ID")
private String channelId;
@JsonProperty("positions")
private List<Position> positions;
}
你怎么看,这是正确的吗?也不要介意类顶部的那些注释,它只是龙目岛。 目前,当我尝试解析时,这个实现给了我以下错误:
com.fasterxml.jackson.databind.exc.MismatchedInputException: 不能 从 START_ARRAY 令牌中反序列化
model.Positions的实例 [来源:(字符串)“['ps', [ ['aa', 'bb', 123.45, 123.45, 567, 123.45, 123.45、123.45、123.45、123.45]] ]";行:1,列:1]
为了测试这一点,我只使用了 ObjectMapper:
public static void main(String[] args) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
try {
Positions positions = objectMapper.readValue("['ps', [ [ 'aa', 'bb', 123.45, 123.45, 567, 123.45, 123.45, 123.45, 123.45, 123.45]] ]", Positions.class);
} catch (IOException e) {
e.printStackTrace();
}
}
【问题讨论】: