Создайте ответ json, содержащий массив массивов - PullRequest
0 голосов
/ 31 октября 2019

Требуется ответ

{
  "data" : [[1234, 55],[1264,45],[1334, 56]]
}

Модель

Class Timeseries{
  private List<List<Integer>> data;
}

Я не думаю, что список списка подходит для получения требуемого ответа json. Но я не могу заменить его наСписок, где CustomObject будет содержать 2 целочисленных переменных-члена. Так как он изменит формат ответа и отправит ответ как данные, содержащие список объектов типа CustomObject вместо списка списков.

Пожалуйста, предложите альтернативный подход

Ответы [ 3 ]

0 голосов
/ 31 октября 2019

Самый простой способ получить нужный результат -

class data extends ArrayList<List<Integer>> {
}

и использовать этот код для сериализации с Джексоном JSON

data ts = new data();
ts.addAll(Arrays.asList(Arrays.asList(1234, 55), Arrays.asList(1264, 45), Arrays.asList(1334, 56)));

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(SerializationFeature.WRAP_ROOT_VALUE);
String result = objectMapper.writeValueAsString(ts);

System.out.println(result);

Выходная строка будет такой, как вам нужно {"data":[[1234,55],[1264,45],[1334,56]]}

Но, если серьезно, правильный путь здесь - это реализовать для

class Timeseries {
    private List<List<Integer>> data;
}

свой собственный com.fasterxml.jackson.databind.ser.std.StdSerializer<T> преемник для Timeseries класса.

ОБНОВЛЕНИЕ:

Просто найдите самый простой способ получить нужную строку для класса

class Timeseries {
   public List<List<Integer>> data;
}

Примечание. Поле data должно быть либо public, либо иметь получатель.

И тогда код

Timeseries ts = new Timeseries();
ts.data = Arrays.asList(Arrays.asList(1234, 55), Arrays.asList(1264, 45), Arrays.asList(1334, 56));

ObjectMapper objectMapper = new ObjectMapper();
String result = objectMapper.writeValueAsString(ts);
System.out.println(result);

напечатает {"data":[[1234,55],[1264,45],[1334,56]]}

0 голосов
/ 01 ноября 2019

Вы можете использовать список массивов размером 2.

0 голосов
/ 31 октября 2019

Вы можете попробовать вот так,

class CustomObject {
    private int data1;
    private int data2;
    // getters & setters
}

Затем вы можете изменить вашу серию времени, как показано ниже,

private List<CustomObject> data;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...