Shu*_*dey 12 json gson deserialization localdate
我正在尝试使用 Gson 反序列化格式为“2018-05-27”的 json 中的日期属性。我希望日期在反序列化后采用 LocalDate 格式。
对于 json 输入:
{ "id" : 1, "name" : "test", "startDate" : "2018-01-01", "endDate" : "2018-01-05", }
我收到 startDate 和 endDate 错误:
java.lang.IllegalStateException:应为 BEGIN_OBJECT 但为 STRING
Shu*_*dey 16
我们可以这样做的方法是:
private static final Gson gson = new GsonBuilder().registerTypeAdapter(LocalDate.class, new JsonDeserializer<LocalDate>() {
@Override
public LocalDate deserialize(JsonElement json, Type type, JsonDeserializationContext jsonDeserializationContext) throws JsonParseException {
return LocalDate.parse(json.getAsJsonPrimitive().getAsString());
}
}).create();
Run Code Online (Sandbox Code Playgroud)
进而
YourClassName yourClassObject = gson.fromJson(msg, YourClassName.class);
Run Code Online (Sandbox Code Playgroud)