Как мне разобрать безымянный массив с разными типами, используя Джексона - PullRequest
1 голос
/ 01 ноября 2019

У меня есть некоторые данные json, которые выглядят так:

"value": [ 1572553480.732, "118" ]

А парсер задыхается от "Невозможно создать экземпляр значения (никаких создателей, таких как конструкция по умолчанию, не существует): нет двойного / двойного аргумента"метод конструктора / фабрики для десериализации из числового значения (1.572553780732E9) "

Мой класс данных выглядит следующим образом:

public class Value {
  private double uTime;
  private String count;
  public Value() { super(); }
  public Value(double uTime, String count) {...}
  // also getters and setters for both
}

1 Ответ

1 голос
/ 02 ноября 2019

Вы можете использовать @JsonFormat аннотацию с JsonFormat.Shape.ARRAY форма:

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonPathApp {

    public static void main(String[] args) throws Exception {
        ObjectMapper mapper = new ObjectMapper();

        String json = "{\"value\": [ 1572553480.732, \"118\" ]}";
        System.out.println(mapper.readValue(json, Root.class));
    }
}

class Root {

    @JsonFormat(shape = JsonFormat.Shape.ARRAY)
    private Value value;

    // getters, setters, toString
}

Над печатью кода:

Root{value=Value{uTime=1.572553480732E9, count='118'}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...