当前位置: 首页 > 知识库问答 >
问题:

Jackson json xmlgregoriancalendar反序列化程序

衡子安
2023-03-14

我对解析json有一个问题。它有一个日期为exapmle-"2014-01-07"。当它解析并成为createUserRequest.getBirthday()时,它包含-"2014-01-07T04:00:00.000 04:00"。我需要它在createUserRequest对象中,然后我会用另一个对象断言它。问题是如何得到“2014-01-07”?

在CreateUserRequest中,我有XMLGregorianCalendar变量,无法更改它。

受保护的格雷戈里安卡伦达生日;

下面只是拉出了部分代码。忽略类和变量名。

public class Test {
    private static final ObjectMapper MAPPER = new ObjectMapper();
    
    public static <T> T parseJson(String pathname, Class<T> objectClass) throws Exception {
        return MAPPER.readValue(new File(pathname), objectClass);
    }

    public void parse() throws Exception {
        CreateUserRequest createUserRequest =
                Test.parseJson("src/test/resources/createUser.json", CreateUserRequest.class);
        System.out.println(createUserRequest.getBirthday());
    }
}

共有1个答案

潘涵煦
2023-03-14

您的问题不清楚。但如果您询问如何解析文本中表示为"2014-01-07"的仅日期值,答案是解析为LocalDate对象。

LocalDate ld = LocalDate.parse( "2014-01-07" ) ;

XMLGregorianCalendar类表示一个时刻,即在特定时区中看到的一天中的时间的日期。对于仅限日期的值,使用这个类是错误的。此外,这个类现在是遗留的,几年前被现代java.time类取代。

Jackson的最新版本支持java。时间

如果一个XMLGregorianCalendar对象被一个尚未更新为java的代码所传递。时间,从遗留类转换到现代java。时间课。

查看添加到旧类中的新转换方法。

您需要通过GregorianCalendar将您的XMLGregorianCalendar对象转换为ZonedDateTime

GregorianCalendar gc = myXmlGregorianCalendar.toGregorianCalendar() ;
ZonedDateTime zdt = gc.toZonedDateTime() ;
LocalDate ld = zdt.toLocalDate() ;

LocalDate target = LocalDate.parse( "2014-01-07" ) ;
if( ld.isEqual( target ) ) { … }
 类似资料:
  • 我使用的是JAVA 1.6和Jackson 1.9.9我有一个枚举 我添加了一个@jsonValue,这似乎完成了它将对象序列化为:

  • 我正在尝试使用kryo序列化和反序列化到二进制。我想我已经完成了序列化,但似乎无法反序列化。下面是我正在处理的代码,但最终我想存储一个字节[],然后再次读取它。文档只显示了如何使用文件。

  • 问题内容: 我尝试过在Java和Android之间实现跨平台序列化。我使用了Serializable,并将我的代码在Android中与台式机Java放在同一软件包中。 来源:java-desktop序列化 资料来源:Android-反序列化 学生是一类,实现了Serializable。在桌面上,我将学生实例序列化为“ thestudent.dat”。我将此文件放在Android设备上的SD卡上,并

  • 问题内容: 我注意到存储在Redis中的某些序列化对象在反序列化方面遇到问题。 当我对Redis中存储的对象类进行更改时,通常会发生这种情况。 我想了解问题,以便为解决方案设计一个清晰的方案。 我的问题是,什么导致反序列化问题?移除公共/私人财产会引起问题吗?也许添加新属性?向类添加新功能会产生问题吗?那么更多的构造函数呢? 在我的序列化对象中,我有一个属性Map,如果我更改(更新了一些属性,添加

  • 问题内容: Golang中将结构序列化和反序列化为字符串的最佳方法(完整性和性能)是什么,反之亦然? 例如,如果我有这个结构: 我想将其存储在Redis上并取回。我试过保存,整型和字符串,这很好,但是如何存储结构对象? 问题答案: 使用gob和base64可以解决问题,例如: 当您需要序列化自定义结构或类型(例如struct)时,只需添加以下行:

  • 主要内容:1 Java序列化和反序列化,2 Java序列化的优点,3 java.io.Serializable接口,4 Java ObjectOutputStream,5 Java ObjectInputStream,6 Java序列化的例子,7 Java反序列化的例子1 Java序列化和反序列化 Java中的序列化是一种将对象状态写入字节流的机制。它主要用于Hibernate,RMI,JPA,EJB和JMS技术。 序列化的反向操作称为反序列化,其中字节流被转换为对象。序列化和反序列化过程与平台