gpt4 book ai didi

java - 无法从字符串值 '/Date(1458672480000)/' 构造 java.util.Date 的实例

转载 作者:行者123 更新时间:2023-12-01 10:06:41 25 4
gpt4 key购买 nike

我一直在尝试对包含日期的 JSON 字符串进行脱盐,但出现以下异常 -

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.util.Date from String value '/Date(1458672480000)/': not a valid representation (error: Unparseable date: "/Date(1458672480000)/" (at offset 0))
at [Source: java.io.StringReader@32e26583; line: 1, column: 199]

代码详情如下-

数据模型-

@JsonIgnoreProperties(ignoreUnknown = true)
public class DataModel {
public Integer Capacity;
public Long Id;
public String Name;
public Date StartDate;
public Date EndDate;
public String Message;
public Integer LocationId;
public Boolean IsValid;
public Integer[] NickNames = new Integer[0];

}

JSON 字符串-

{"d":[{"__type":"my.package.name.className","Id":1,"Name":"xxx","PlaceId":2,"Message":"","IsValid":false,"NickNames":[],"StartDate":"\/Date(1458672480000)\/","EndDate":"\/Date(1458689400000)\/","Size":0,"StringStartDate":"2016-03-22T14:48:00-04:00","StringEndDate":"2016-03-22T19:30:00-04:00"}]}

反序列化代码-

ObjectMapper mapper = new ObjectMapper();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ");
mapper.setDateFormat(dateFormat);
mapper.configure(SerializationConfig.Feature.WRITE_DATES_AS_TIMESTAMPS, false);
TypeReference<HashMap<String,DataModel[]>> typeRef= new TypeReference<HashMap<String,DataModel[]>>(){};
HashMap<String,DataModel[]> newSessions = mapper.readValue(data, typeRef);

JSON字符串有问题吗?如果不是,反序列化的正确方法是什么?

最佳答案

Date对象的构造函数是Date(long millis)。但是您正在将此字符串传递给它 - “Date(1458672480000)”

从此字符串中获取 long 值,然后创建 Date 对象。假设您的开始日期是 "Date(1458672480000)" 那么 -

Date d = new Date(Long.parseLong(startDate.substring(5, 18)));

这里我们提取字符串的数字部分并将其转换为long类型。

理想情况下,如果您的服务器直接向您发送 long 值会更好,这样您就不必解析它。如果 long 日期值直接以 json 形式出现,您的代码将会完美运行 - "startDate": 1458672480000

关于java - 无法从字符串值 '/Date(1458672480000)/' 构造 java.util.Date 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36401084/

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