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

JSON Jackson ObjectMapper ReadValue-转换日期时出错

万俟光临
2023-03-14

当尝试将json字符串转换为对象时,我看到下面列出的错误。我没有Data类的源代码&它是一个jar文件的一部分。有什么办法可以让我用混合剂来解决这个问题吗?

代码

ObjectMapper mapper = new ObjectMapper();
mapper.readValue(request, Data.class);
 "timeSlot":{  
       "date":"2015-10-21",
       "endTime":"10:00:00",
       "startTime":"08:00:00",   
 }
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeConstants;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;

import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;

public class TestJSONDeserialize {

    public static void main(String[] args){

        ObjectMapper mapper = new ObjectMapper();
        mapper.addMixIn(Data.class, MyMixin.class);

        String jsonString = "{\"date\":\"2014-02-10\",\"time\":\"16:15:00\"}";
        try {
            mapper.readValue(jsonString, Data.class);
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }


}

数据类(我无法对此文件进行更改)

import javax.xml.datatype.XMLGregorianCalendar;

public class Data {

    private XMLGregorianCalendar date;
    private XMLGregorianCalendar time;

    public XMLGregorianCalendar getDate() {
        return date;
    }
    public void setDate(XMLGregorianCalendar date) {
        this.date = date;
    }
    public XMLGregorianCalendar getTime() {
        return time;
    }
    public void setTime(XMLGregorianCalendar time) {
        this.time = time;
    }



}

当我运行此操作时,我看到以下错误:

com.fasterxml.jackson.databind.exc.InvalidFormatException:无法从字符串值“16:15:00”构造javax.xml.dataType.XMLGregorianCalendar实例:无效表示形式(错误:无法解析日期值“16:15:00”:无法解析日期“16:15:00”:与任何标准形式(“YYYY-MM-DD't'hh:mm:ss.sssz”、“YYYY-MM-DD't'hh:mm:ss.sss'z'”、“eee,dd MMM yyyy HH:mm:sss'zz”、“YYYY-MM-DD”)不兼容)[Source:{“Date”:“2014-02-10”,“Time”:“16:15:00”};行:1,列:21](通过引用链:com.comcast.json.test.data[“Time”])

共有1个答案

方昊阳
2023-03-14

看这里。在字段上粘贴日期格式化程序:

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="HH:mm:ss", timezone="CET")
private Date startTime;
 类似资料:
  • 主要内容:标签属性,JSF <f:convertDateTime>实例,JSF <f:convertDateTime>实例2标签用于将用户输入转换为指定的日期。 您可以通过将组件标签内的标签嵌套来将组件的数据转换为。 标签有几个属性,可以指定数据的格式和类型。 标签属性 属性 类型 描述 binding DateTimeConverter 它用于将转换器绑定到受委托Bean属性。 dateStyle String 它用于定义由指定的日期或日期字符串的日期部分的格式。 只适用于是或,如果未定义。

  • 我正在开发一个需要Hijri Date的应用程序,我使用了这里发布的内容将gregorian转换为Hijri Date。 它对我有用,但它给出了错误的日期,例如,当公历是2016年9月20日时,它在Hijri变成了1437年12月17日,这是错误的,它应该是1437年12月19日。 问题出在哪里?

  • 问题内容: 我与第三方数据库,该数据库(无论何种原因)内部存储格式的日期的工作如用于作为。 有没有简单的方法可以将其转换为SQL Server类型? 我尝试将上面的内容手动转换为长度为6的字符序列,并将其与“ 01”连接起来以获取给定月份的开始,如下所示: 然后将其包装在转换中: 但这似乎抛出了; 从字符串转换日期和/或时间时转换失败 谁能告诉我我在做什么错? 谢谢!:) 问题答案: 您需要使用正

  • 问题内容: 有谁知道如何将JS dateTime转换为MySQL datetime?还有一种方法可以向JS日期时间添加特定的分钟数,然后将其传递给MySQL日期时间? 问题答案: 尽管JS确实拥有足够的基本工具来执行此操作,但它相当笨拙。

  • 周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢

  • 问题内容: 我正在以编程方式从ldap导出用户。因此,我正在从ldap检索用户。属性之一是。 我必须转换的值之一是:直接将其拆分成以下格式:+ 。问题在于应用程序正在CET时区运行,并且存储的时间是UTC,这可能由表示。是,并且本地表示形式是。夏季似乎是2个小时,而冬季是1个小时。 我检查了SimpleDateFormat,发现时区有一个占位符,但是它是不同的格式。 由于忽略日期时区,将显示错误的