Gson : 反序列化 Jackson 序列化的时间
Gson : deserialize time serialized by Jackson
Json 杰克逊给出的字符串包含时间 {"time":"19:31:00"}
我想使用 Gson 反序列化它以取回 java.sql.Time
对象。
我应该在 gson 中设置什么 DateFormat?
目前,我正在使用
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
尝试先获取字符串形式的日期,然后使用new SimpleDateFormat("HH:mm:ss").parse(timeStr)
将其转换为日期
您可以使用 Gson 为 java.sql.Time
注册一个 JSONDeserializer。
public static void main(String[] args) {
Gson gson = new GsonBuilder().registerTypeAdapter(Time.class, new MyTimeJsonDeserializer()).create();
MyTime time = gson.fromJson("{\"time\": \"19:31:00\"}", MyTime.class);
System.out.println(time.getTime());
}
public static class MyTime{
private Time time;
public Time getTime() {
return time;
}
public void setTime(Time time) {
this.time = time;
}
}
public static class MyTimeJsonDeserializer implements JsonDeserializer<Time>{
@Override
public Time deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
String time = json.getAsString();
String[] parts = time.split(":");
return new Time(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
}
}
Json 杰克逊给出的字符串包含时间 {"time":"19:31:00"}
我想使用 Gson 反序列化它以取回 java.sql.Time
对象。
我应该在 gson 中设置什么 DateFormat?
目前,我正在使用
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss").create();
尝试先获取字符串形式的日期,然后使用new SimpleDateFormat("HH:mm:ss").parse(timeStr)
您可以使用 Gson 为 java.sql.Time
注册一个 JSONDeserializer。
public static void main(String[] args) {
Gson gson = new GsonBuilder().registerTypeAdapter(Time.class, new MyTimeJsonDeserializer()).create();
MyTime time = gson.fromJson("{\"time\": \"19:31:00\"}", MyTime.class);
System.out.println(time.getTime());
}
public static class MyTime{
private Time time;
public Time getTime() {
return time;
}
public void setTime(Time time) {
this.time = time;
}
}
public static class MyTimeJsonDeserializer implements JsonDeserializer<Time>{
@Override
public Time deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
throws JsonParseException {
String time = json.getAsString();
String[] parts = time.split(":");
return new Time(Integer.parseInt(parts[0]), Integer.parseInt(parts[1]), Integer.parseInt(parts[2]));
}
}