gpt4 book ai didi

java - 如何将 JSON String 自定义反序列化为 Java Date?

转载 作者:行者123 更新时间:2023-11-29 06:56:28 26 4
gpt4 key购买 nike

我正在使用 GSON 库在客户端和服务器端序列化和反序列化 java 对象。我有一个场景,我在客户端有一个以毫秒为单位的日期,但在服务器上,我有相同的字段,数据类型为 Date。这是客户端的示例代码 -

class Dog {
long id;
long purchaseDate; //This is in milliseconds
String name;
boolean status;
}

在服务器端——

class Dog {
long id;
Date purchaseDate; //Convert milliseconds to date
String name;
int status; //If boolean is false then 0 else 1
}

如何使用 GSON 库来实现。如果不能通过 GSON,那么哪个库适合这种序列化/反序列化?

最佳答案

您可以使用自定义 TypeAdapter将 JSON 中的 long 转换为 POJO 中的 Date。你可以在服务端使用这个,然后客户端和JSON使用long,服务端使用Date

public class DateTypeAdapter extends TypeAdapter<Date> {
@Override
public void write(JsonWriter out, Date value) throws IOException {
out.value(value.getTime());
}

@Override
public Date read(JsonReader in) throws IOException {
return new Date(in.nextLong());
}
}

您将需要使用注册适配器的自定义 Gson。这将适用于类型为 Date 的所有字段的适配器 --

Gson gson = new GsonBuilder()
.registerTypeAdapter(Date.class, new DateTypeAdapter())
.create();

要仅应用于特定字段,请使用 JsonAdapter 应用适配器注释。

class Dog {
long id;
@JsonAdapter(DateTypeAdapter.class)
Date purchaseDate; //Convert milliseconds to date
String name;
int status; //If boolean is false then 0 else 1
}

请注意,通过此调用,您可以使用常规 gson ---

Gson gson = new Gson();

关于java - 如何将 JSON String 自定义反序列化为 Java Date?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33268370/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com