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

无法从字符串值构造java.util.Date实例-不是有效的表示形式

金令
2023-03-14
    null

JAVA应用程序中使用的Jar包括jackson-core-asl-1.9.13.Jarjackson-mapper-asl-1.9.13.Jar等。

我的问题是处理日期的时候。

读数:(试图启发但杰克逊版本似乎不一样):

JSON序列化自定义格式的日期(无法从字符串值构造java.util.date的实例)

Jackson 2.3.2:在将日期格式设置为ObjectMapper的情况下反序列化日期的问题

编辑01/04/15

2014-07-31 07:00:00.0

第2点:就在使用setter之前,我想把这个字符串格式化为一个日期可能是个好主意。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                                    Date dateebl = dateFormat.parse(deliverydate);
                                    msi.setDatebl(dateebl);

POJO中的datebl声明

private java.util.Date    datebl;

第3点和我有的错误:我有的错误是由rest服务器抛出的:

无法从字符串值“Thu Jul 31 07:00:00 CEST 2014”构造java.util.date的实例:无效表示(错误:无法解析日期“Thu Jul 31 07:00:00 CEST 2014”:与任何标准形式(“YYYY-MM-DD't'hh:mm:ss.sssz”,“YYYY-MM-DD't'hh:mm:ss.sss'z'”,“EEE,dd MMM yyyy HH:mm:sszz”,“YYYY-MM-DD”)不兼容)[source:org.glassfish.jersey.message.internal.EntityInputStream@5709779;行:1,列:74](通过参考链:com.rest.entities.mvtswapsin[“datebl”])

我尝试做的:为了解决这个问题,由于我使用的是2.x之前的版本,我认为最好的选择是使用自定义序列化器,因此:

>

  • 在pojo中,注释被添加在getter之前

    @JsonSerialize(using = CustomJsonDateSerializer.class)
        public java.util.Date getDatebl() {
            return datebl;
        }
    

    序列化程序创建如下

    public class CustomJsonDateSerializer extends JsonSerializer<Date> {
    
    @Override
    public void serialize(Date value, JsonGenerator jgen,
            SerializerProvider provider) throws IOException,
            JsonProcessingException {
        SimpleDateFormat dateFormat = new SimpleDateFormat(Properties.General.FORMAT_HEURE_JSON_SERIALIZE_2);
        String dateString = dateFormat.format(value);
        jgen.writeString(dateString);       
    }
    
    public static final String  FORMAT_HEURE_JSON               = new String("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
    public static final String  FORMAT_HEURE_JSON_SERIALIZE     = new String("EEE yyyy-MM-dd'T'HH:mm:ss.SSSZ");
    public static final String  FORMAT_HEURE_JSON_SERIALIZE_2   = new String("EEE, dd MMM yyyy HH:mm:ss zzz");
    public static final String  FORMAT_HEURE_JSON_SERIALIZE_3   = new String("yyyy-MM-dd HH:mm:ss");
    

    在这一点上,我迷路了。

    我不知道在哪里以及如何更新我的代码

    1. 从SOAP ws获取日期后,是否仍应使用SimpleDateFormat?
    2. 鉴于我使用的是Jackson1.9,我的@JsonSerialize注释好吗?(以及序列化程序?)
    3. 必须修改rest服务器上的内容吗?
  • 共有1个答案

    拓拔弘化
    2023-03-14

    打开POJO,对日期字段声明进行注释,如下所示

    @JsonFormat
      (shape = JsonFormat.Shape.STRING, pattern = "<your_date_pattern>")
    

    其中your_date_pattern可以是类似于

    yyyy-MM-dd HH:mm:ss
    

    已完成

     类似资料:
    • 将json请求传递给POJO类中的REST控制器方法。用户应该只输入以下的datetime格式,否则它应该抛出消息。为什么DateSerializer没有调用? JSON: pojo类变量

    • 使用Spring1.5.8释放Jackson mapper,给出以下异常。 在[源:未知;行:-1,列:-1](通过引用链:com.copart.conversationapi.CallDisposition.model.vo.CallLogEntity[“CallEndTime”]) Callentity.java java pom.xml

    • 问题内容: 假设我有一个这样的类(并进一步假设所有私有变量: 现在,如果要构建此类的toString()表示形式,则可以在Item类中执行以下操作: 但是,如果我在类中说了15个私有变量,该怎么办?我是否需要像这样写出每个变量的名称? 理想情况下,我想遍历该类的私有变量列表并构造字符串表示形式来结束任务: 也许是toJSON方法,我仍然需要访问这些变量的名称。有什么建议? 问题答案: 您可以这样做

    • 我正试图向服务器发出post请求,但我得到以下错误。 这是我的控制器。 我尝试将添加到我的字段中,但这似乎并不能解决问题

    • 我想在JComboBoxe中显示我的名为CodeA(类型为String)的变量中的每个项。我有一条错误消息: 我不明白和之间的转换 编辑:在此处输入图像描述

    • 问题内容: 我在列表中有一个字符串路径集合,例如[“ x1 / x2 / x3”,“ x1 / x2 / x4”,“ x1 / x5”]。我需要从该列表构造一个树状结构,可以对其进行迭代以获得漂亮的打印树。像这样 有什么想法/建议吗?我认为可以通过处理字符串列表来首先解决该问题。编辑:选择的正确答案是一种优雅的实现,其他建议也很好。 问题答案: 遵循可访问树的幼稚实现的实现: 访客模式的界面: 访