要序列化一个 LocalDateTime:
import java.time.LocalDateTime;
import jakarta.json.bind.annotation.JsonbDateFormat;
public class DateAndTime {
@JsonbDateFormat("dd/MM/yyyy HH:mm:ss.SSS") //optional
public LocalDateTime dateAndTime;
@Override
public String toString() {
return "DateAndTime [dateAndTime=" + dateAndTime + "]";
}
}
将Jakarta JSON Binding (JSON-B) 转换成JSON并读回它,在你的pom.xml 中添加以下依赖:
<dependency>
<groupId>org.eclipse</groupId>
<artifactId>yasson</artifactId>
<version>2.0.4</version>
</dependency>
现在DateAndTime 类可以被序列化为一个String ,并反序列化为另一个DateAndTime 实例:
import java.time.LocalDateTime;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import jakarta.json.bind.Jsonb;
import jakarta.json.bind.JsonbBuilder;
public class DateAndTimeTest {
private Jsonb jsonb;
@BeforeEach
public void init() {
this.jsonb = JsonbBuilder.newBuilder().build();
}
@Test
public void dates(){
var dateAndTime = new DateAndTime();
dateAndTime.dateAndTime = LocalDateTime.now();
var serialized = this.jsonb.toJson(dateAndTime);
System.out.println(serialized);
System.out.println("---");
var deserialized = this.jsonb.fromJson(serialized, DateAndTime.class);
System.out.println(deserialized);
}
}
输出:
{"dateAndTime":"29.01.2022 16:07:15"}
---
DateAndTime [dateAndTime=2022-01-29T16:07:15]