Я хотел бы проанализировать следующий 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;
}
Эта вещь, которую я пытаюсь проанализировать, похоже, имеет массив Position, но также до того, как у него есть этот CHAN_ID, я должен создать какой-то класс-обертку для этого?
@Getter
@Setter
@EqualsAndHashCode
@ToString
@NoArgsConstructor
public class Positions {
@JsonProperty("CHAN_ID")
private String channelId;
@JsonProperty("positions")
private List<Position> positions;
}
Как вы думаете, это правильно? Также не обращайте внимания на эти аннотации в верхней части классов, это просто Lombok.
В настоящее время эта реализация выдает мне следующую ошибку при попытке анализа:
com.fasterxml.jackson.databind.exc.MismatchedInputException: невозможно
десериализовать экземпляр model.Positions
из токена START_ARRAY в
[Источник: (String) "['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();
}
}