簡體   English   中英

創建一個包含數組數組的 json 響應

[英]Create a json response containing array of array

需要回復

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

Model

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

我覺得列表列表不適合實現所需的 json 響應。但我無法用列表替換它,其中 CustomObject 將包含 2 個 integer 成員變量。 因為它將更改響應的格式並將響應作為包含 CustomObject 類型的對象列表而不是列表列表的數據發送。

請建議另一種方法

你可以這樣試試

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

然后你可以修改你的時間序列如下,

private List<CustomObject> data;

達到所需 output 的最簡單方法是

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

並使用此代碼與 Jackson 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);

output 字符串將根據您的需要{"data":[[1234,55],[1264,45],[1334,56]]}

但是,嚴肅地說,這里的正確方法是實施

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

您自己的com.fasterxml.jackson.databind.ser.std.StdSerializer<T> Timeseries class 的繼任者。

更新:

只需找出最簡單的方法來獲取 class 所需的字符串

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

注意data字段必須是public的或有一個 getter。

然后代碼

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]]}

您可以使用大小為 2 的 Arrays 列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM