在Android開發(fā)中,Gson是非常重要的一個庫,它可以將java對象轉(zhuǎn)化為json字符串,并且可以將json字符串轉(zhuǎn)化為java對象。而在json中,時間格式通常使用ISO格式串來表示。在Gson中,處理時間格式的方式有兩種:使用默認(rèn)的GsonBuilder或者自定義TypeAdapter。
使用默認(rèn)的GsonBuilder,我們可以自動將時間格式轉(zhuǎn)換為ISO格式串,然后再進(jìn)行序列化。例如:
Gson gson = new GsonBuilder() .setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ") .create(); String json = gson.toJson(myObject);
這樣就可以將時間格式為“2019-05-01T13:15:30+08:00”的對象轉(zhuǎn)換為json字符串。在反序列化時,Gson會自動將json字符串中的時間格式解析為Date類型。
如果我們需要自定義時間格式,可以使用自定義TypeAdapter。例如,如果我們需要將時間格式轉(zhuǎn)換為“yyyy年MM月dd日 HH:mm:ss”的字符串格式,可以這樣定義一個自定義的TypeAdapter:
public class DateAdapter extends TypeAdapter{ private final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); @Override public void write(JsonWriter out, Date value) throws IOException { if (value == null) { out.nullValue(); return; } String formatted = dateFormat.format(value); out.value(formatted); } @Override public Date read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } String dateStr = in.nextString(); try { return dateFormat.parse(dateStr); } catch (ParseException e) { throw new IOException(e); } } } Gson gson = new GsonBuilder() .registerTypeAdapter(Date.class, new DateAdapter()) .create(); String json = gson.toJson(myObject);
這樣就可以將時間格式為“2019-05-01T13:15:30+08:00”的對象轉(zhuǎn)換為格式為“2019年05月01日 13:15:30”的json字符串。