gpt4 book ai didi

java - json 反序列化因格式有效而失败

转载 作者:行者123 更新时间:2023-12-02 01:06:32 24 4
gpt4 key购买 nike

我有一个 json 文件,其日期如下:

{
...
"dob":"20001010",
"registerdate":"20001010121212",
...
}

我在类里面使用:

public class User implements Serializable {
... some other
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyyMMdd
public java.util.Date dob; // this works

@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyyMMddHHmmss")
public java.util.Date registerdate;
}

然后在我的测试中我使用 Gson 来转换文件

User user = new Gson().fromJson("user.json", User.class);

但是当运行时,我得到:

com.google.gson.JsonSyntaxException: 20001010121212

我尝试过: yyyyMMddHHmmss 或 YYYYMMddHHmmss 或 YYYYMMDDHHmmss 相同的结果

pom:

        <dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

最佳答案

基本上,com.google.gson.Gson无法识别注释com.fasterxml.jackson.annotation.JsonFormat(两个不同的库)

这是另一种仅使用 fastxml lib 中的 ObjectMapper 的解决方案

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.Serializable;
import java.util.Date;

public class DemoApplication {
public static void main(String[] args) throws JsonProcessingException {
String json = "{\"dob\":\"20001010121212\"}";
ObjectMapper objectMapper = new ObjectMapper();
User user = objectMapper.readValue(json, User.class);
System.out.println(user.dob);
}
}

class User implements Serializable {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyyMMddHHmmss")
public Date dob;
}

关于java - json 反序列化因格式有效而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59979032/

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