簡體   English   中英

如果擴展 ArrayList,則無法使用 Jackson Json 類字段進行序列化

[英]Can't serialize with Jackson Json class fields if it extends ArrayList

我正在使用傑克遜 Json。 如果類擴展了 ArrayList,我將無法序列化類字段。

班級:

public class DataElement {
    private Date date;
    private int val1;
    private int val2;
    // constructor, getters, setters
}

public class DataArray extends ArrayList<DataElement> {
    private String info;
    private int num;
    // constructor, getters, setters
}

序列化:

ObjectMapper jsonMapper = new ObjectMapper();
jsonMapper.writeValue(new File("path"), dataArray);

結果文件僅包含數據元素:

[ {
  "date" : 1446405540000,
  "val1" : 10296,
  "val2" : 30365
}, {
  "date" : 1446405600000,
  "val1" : 40164,
  "val2" : 20222
} ]

'num' 和 'info' 不會保存到文件中。

如何保存完整的類,包括其字段?

Jackson 將根據JsonFormat.Shape序列化您的 POJO。 對於為ARRAYArrayList對象。 您可以使用注釋將形狀更改為OBJECT

@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public class DataArray extends ArrayList<DataElement> {

確保DataArray有一個 getter 返回一個ArrayList例如

public ArrayList<DataElement> getContents() {
    return new ArrayList<>(this);
}

當我嘗試上面的代碼時,我在結果 JSON 中看到了這個字段

"empty":false

您可以使用@JsonIgnore來防止它出現

暫無
暫無

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

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