我想序列化一個包含日期列表的對象,我想序列化爲特定格式(yyyy-MM-dd)的JSON日期列表(字符串)。與傑克遜序列化日期列表
private List<Date> executionDates;
會變得像:
"executionDates": [
"2016-07-22",
"2016-07-23",
"2016-07-24"
]
這是可能的註釋做呢?
在此先感謝。
我想序列化一個包含日期列表的對象,我想序列化爲特定格式(yyyy-MM-dd)的JSON日期列表(字符串)。與傑克遜序列化日期列表
private List<Date> executionDates;
會變得像:
"executionDates": [
"2016-07-22",
"2016-07-23",
"2016-07-24"
]
這是可能的註釋做呢?
在此先感謝。
我找到了解決辦法。我不得不使用屬性contentUsing
,而不是using
在註釋是這樣的:
@JsonSerialize(contentUsing = JsonDateSerializer.class)
contentUsing屬性用於收藏。從類文件:
串行器類使用用於序列化內容註釋屬性的(一個 收集/陣列的元件,地圖的值)。只能在屬性(方法,字段,構造函數)上使用 ,並且不能爲類本身賦值(因爲它們通常是泛型的)。
對於所有人來說,請注意:請考慮私有字段名稱和getter/setter方法之間的一致性:例如,如果您將註釋放在專用字段上,但其公用getter方法的名稱不同,則最終結果將不會使用註記功能 – Chris
嘗試這樣:
對於串行化:
@Component
public class JsonDateSerializer extends JsonSerializer<Date>
{
// ISO 8601
private static final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException
{
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}
我已經嘗試過,但我得到這個異常:'com.fasterxml.jackson.databind.JsonMappingException:java.util.Arrays $ ArrayList不能轉換爲java.util.Date'。不是應用於List中的每個元素,而是應用於整個集合。 – lealoureiro
你有沒有在你的代碼中的某個地方? '@JsonSerialize(using = JsonDateSerializer.class)'編輯:你有沒有嘗試將日期設置爲變量類型Date,而不是將數據放入數組列表中? – Shaydoth
是的,我有這樣的:'@JsonSerialize(使用= JsonDateSerializer.class) \t公衆最終名單
你是什麼意思與註釋?你的意思是?另外,你不能序列化一個列表,爲了序列化一個列表,你需要把數據放到一個哈希集合中,因爲哈希集是可序列化的。 – Shaydoth
就像'@JsonSerialize(using = JsonDateSerializer.class)'這樣的'executionDates'變量的getter。 – lealoureiro