gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:57:59 25 4
gpt4 key购买 nike

我在尝试将 json 字符串转换为对象时看到下面列出的错误。我没有数据类的源代码,它是 jar 文件的一部分。有什么方法可以使用 mixin 来解决这个问题吗?

代码

ObjectMapper mapper = new ObjectMapper();
mapper.readValue(request, Data.class);

错误

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of javax.xml.datatype.XMLGregorianCalendar from String value '10:00:00': not a valid representation (error: Can not parse date "10:00:00": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

JSON 请求

 "timeSlot":{  
"date":"2015-10-21",
"endTime":"10:00:00",
"startTime":"08:00:00",
}

编辑

这个问题类似于this ,但是这是在反序列化时发生的。另一个解决方案有助于适本地序列化请求。

我已经在下方粘贴了无法正常工作的示例代码 -

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: Can not construct instance of javax.xml.datatype.XMLGregorianCalendar from String value '16:15:00': not a valid representation (error: Failed to parse Date value '16:15:00': Can not parse date "16:15:00": not compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd")) at [Source: {"date":"2014-02-10","time":"16:15:00"}; line: 1, column: 21] (through reference chain: com.comcast.json.test.Data["time"])

最佳答案

参见 here .在您的字段上粘贴日期格式器:

@JsonFormat(shape=JsonFormat.Shape.STRING, pattern="HH:mm:ss", timezone="CET")
private Date startTime;

关于java - JSON Jackson ObjectMapper ReadValue - 转换日期时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33113375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com