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

JSonからオブジェクトへの変換にJacksonを使用している場合は、日付またはを表す文字列値から日付を生成するためにインスタンスが使用する必要がDateFormatあるインスタンスを指定する必要があります。mappertimestamp

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 に答える