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

标签 java json date

我有一个 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/

相关文章:

java - PMD 工具是否可以选择显示违规计数的差异(代码更改之前和之后)?

java - 通过树递归计算性别

java - 是否从标准 Java API 中删除了任何内容?

java - 在同一字段上读取和写入不同的 @JsonProperty 配置?

json - 通过 npm run 运行时 Webpack 失败

r - 如何使用sqldf获取日期?

java - 想要将一周中的某一天作为字符串,但给出错误的一天

java - 格式化toString方法

Json 架构 - oneOf 字段需要是必需的

python - 将日期转换为 CSV 中的特定格式