2

在尝试解析以下 JSON 字符串时:

{
    marketplaceId:"MKPL",
    asin:"ASIN1",
    sourceTimestamp:2013-03-19T23:38:24.054Z,
    orderId:"ORD1",
    vendorId:"SUPR1",
    warehouseId:"SEA8",
    inventoryOwnerGroup:376,
    lastUpdatedAt:2013-03-19T23:38:23.919Z,
    isHighConfidence:true,
    quantityArriving:2,
    expectedDeliveryDate:2013-03-19T23:38:23.919Z
}

我得到以下异常:

org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.sql.Timestamp out of VALUE_EMBEDDED_OBJECT token
 at [Source: N/A; line: -1, column: -1] (through reference chain: com.amazon.freshwombat.po.PurchaseRecord["lastUpdatedAt"])
    at org.codehaus.jackson.map.JsonMappingException.from(JsonMappingException.java:163)
    at org.codehaus.jackson.map.deser.StdDeserializationContext.mappingException(StdDeserializationContext.java:219)
    at org.codehaus.jackson.map.deser.std.StdDeserializer._parseDate(StdDeserializer.java:580)
    at org.codehaus.jackson.map.deser.std.TimestampDeserializer.deserialize(TimestampDeserializer.java:28)
    at org.codehaus.jackson.map.deser.std.TimestampDeserializer.deserialize(TimestampDeserializer.java:19)

我错过了什么吗?谢谢!

4

2 回答 2

3

JSON 不支持“日期”的概念。它只支持简单的数据类型,如字符串、数字、数组、布尔值等。因此,将您的日期表示为字符串。例如:

lastUpdatedAt: "2013-03-19T23:38:23.919Z",

您必须使用其他 JavaScript 工具/第三方库进行实际日期解析。

于 2013-03-20T00:31:59.133 回答
1

如果您使用Jackson进行 JSon 到 Object 的转换,您必须指定DateFormat一个mapper实例应该使用以便从代表日期的字符串值生成 Date 或timestamp.

在 ( mysql)的情况下timestamp

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ObjectMapper mapper = new ObjectMapper();
mapper.setDateFormat(format)
Entity entity = mapper.readValue("{ }", Entity.class);

如此密切地遵循@SimpleCoder 的建议和这个片段,我想你不应该有问题。

于 2013-08-08T17:28:02.017 回答