@Crunkor

Как связать JSON с POJO без родительского элемента?

Имеется такой JSON:
{
   "data":[
      {
         "store_id":"6217704612",
         "created":"1587466128",
         "price":"5000",
         "amount":"1"
      },
      {
         "store_id":"6217704613",
         "created":"1587466130",
         "price":"2000",
         "amount":"2"
      }
   ]
}


Маппинг
@Getter
@Setter
public class MyJSON {
    @JsonProperty("data")
    private List<MyData> data;
}


@Entity
@Getter
@Setter
public class MyData {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @JsonProperty("store_id")
    private long storeId;
    private Timestamp created;
    private double price;
    private double amount;
}


Сейчас код работает так:
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
MyJSON myJSON = mapper.readValue(jsonString, MyJSON.class);
List<MyData> myData = myJSON.getData();


В myData я получаю нужную мне коллекцию. Как можно переписать этот код/маппинг, что бы не создавать объект MyJSON ?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 2
Пробуй так:
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonString).path("data");
List<MyData> myJSON = mapper.readValue(node.toString(), new TypeReference<List<MyData>>() {});
Ответ написан
Комментировать
Maksclub
@Maksclub
maksfedorov.ru
Может как-то так?
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonString).path("data");
List<MyData> myData = Arrays.asList(mapper.readValue(node.toString(), MyData[].class));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы