我在通过邮递员传递json数据时遇到问题。如果Mandetory日期带有@NotNull
注释,没问题。另一个日期接受null。但是在更新时,该日期会产生问题。我使用Java1.8与Spring启动
以下链接我已经访问过,但不适合这个。杰克逊JSON解析错误的LocalDateTime解析:无法构造java.time.LocalDate的实例:没有String参数构造函数/工厂方法从String值反序列化https://stackoverflow.com/a/29959842/3415090JSONJavaSpring Boot中的8 LocalDateTime格式
我也用过
@JsonSerialize(using = LocalDateSerializer.class)
@JsonDeserialize(using = LocalDateDeserializer.class)
但是问题仍然存在。
我的用户体验
public class LeaveApplUx {
@JsonIgnore
@Size(max = 5, message = "Employee Code Must Be Within 4 To 5 Character Long Or Blank")
private final String employeeCode;
@NotNull(message = "Start Date Empty")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
private final LocalDate startDate;
@JsonIgnore
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
private final LocalDate rejoinDate;
public LeaveApplUx(
@Size(min = 4, max = 5, message = "Employee Code Must Be Within 4 To 5 Character Long Or Blank")
@JsonProperty("employeeCode") String employeeCode,
@NotNull(message = "Start Date Empty") @JsonProperty("startDate") LocalDate startDate,
@JsonProperty("rejoinDate") LocalDate rejoinDate) {
this.employeeCode = employeeCode;
this.startDate = startDate;
this.rejoinDate = rejoinDate;
}
// GETTERS
}
在创作时,它工作得很好。
{
"employeeCode": "B426",
"startDate": "01-03-2023"
}
输入参数:{“员工代码”:“B426”、“开始日期”:{“年份”:2023、“月份”:“三月”、“月值”:3、“日月”:1、“跨年”:假、“日周”:“周三”、“日年”:60、“时代”:“CE”、“年表”:{“id”:“ISO”、“calendarType”:“iso8601”}}、“rejoinDate”:null}
记录在DB中正确保存
但是在更新时,它会产生错误。
{
"employeeCode": "B426",
"startDate": "01-03-2023",
"rejoinDate": "06-03-2023"
}
JSON parse error:
Cannot deserialize value of type `java.time.LocalDate` from String "06-03-2023": Failed to deserialize java.time.LocalDate: (java.time.format.DateTimeParseException) Text '06-03-2023' could not be parsed at index 0; nested exception is com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `java.time.LocalDate` from String "06-03-2023": Failed to deserialize java.time.LocalDate: (java.time.format.DateTimeParseException) Text '06-03-2023' could not be parsed at index 0
at [Source: (PushbackInputStream); line: 14, column: 19] (through reference chain: org.myapp.ux.hr.leave.LeaveApplUx["rejoinDate"])
由于您通过构造函数而不是setter设置值,因此您应该将@JsonFormat(...)
放在构造函数参数上,而不是字段上。这应该可以解决它:
public class LeaveApplUx {
@JsonIgnore
private final String employeeCode;
private final LocalDate startDate;
@JsonIgnore
private final LocalDate rejoinDate;
public LeaveApplUx(@JsonProperty("employeeCode") String employeeCode,
@JsonProperty("startDate") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy") LocalDate startDate,
@JsonProperty("rejoinDate") @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy") LocalDate rejoinDate) {
this.employeeCode = employeeCode;
this.startDate = startDate;
this.rejoinDate = rejoinDate;
}
//getters
}
我在MongoDB集合中有以下文档,我希望将该文档映射回Kotlin对象。 我编写了一个自定义的反序列化器来读取UUID的二进制值,但它失败了。如有任何帮助,我们将不胜感激。 主应用程序。 序列化程序和反序列化程序:
谁能帮我找出我在这里做错了什么。我必须解析下面的XML字符串 为此,我有三个bean要映射,如下所示 我试图像下面这样解析 我使用的是jackson-dataformat-xml版本2.9.8。
我正在尝试将旧的EJB服务(其中的逻辑)包装在一个微服务中。我使用Quarkus/RESTEasy实现此微服务 但是,我在自定义序列化/反序列化时遇到问题。 问题:,这让我相信Jackson并不认为Geometry是要解析为String的类。这让我相信对象映射器没有被拾取。。 注1:我可以在Quarkus日志中提供的日志语句中看到: 注2:单元测试在上运行良好。 这是我要解析的JSON(注:几何是
问题内容: 我从REST服务返回以下JSON响应。现在,我需要将以下JSON响应反序列化为POJO。我正在与杰克逊合作。 在上面的json中,是一个可以具有多个json对象的JSON数组。现在也是JSON数组。现在棘手的部分是,我可以在每个类别对象中拥有多个级别,并且我不知道我将拥有多少个级别。给定以上JSON,我需要提取每个类别和last的内容。所以应该是这样的: 其中是类别的taskId,是l
问题内容: 我具有以下值: 和以下类: 我想将其解析为a 或a 使用Jackson的 方法最简单? 问题答案: 我终于明白了: