2017-01-07 17 views
0

は、私はこのようなフォーマットされた日付とJSONを受け取る:逆シリアル化JSONリテラル

yyyy-MM-ddTHH:mm:ssZ 

しかし、私はそれを正しくデシリアライズすることはできません。私は次のようなもので試しました。

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssZ") 
private SimpleDateFormat createdAt; 

ジャクソンデシリアライザとさまざまなタイプのもので試しました。いいえ、うまくいきません。

+0

このリンクはあなたを助けることができる - のhttp://wiki.fasterxmlを。 com/JacksonFAQDateHandling – Arpit

答えて

0

以下のJSONを受け取ったとします。

{"item":{"title":"my title","expires":"2017-01-07T18:46:19Z"}} 

Item.java:

@JsonRootName("item") 
@JsonInclude(JsonInclude.Include.NON_NULL) 
public class Item { 
public String title; 
public Date expires; 

@Override 
public String toString() { 
    return "Item{" + 
     "title='" + title + '\'' + 
     ", expires=" + expires + 
     '}'; 
} 
} 

使いたいDateFormatObjectMapperを設定します。

ObjectMapper mapper = new ObjectMapper(); 
    mapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, true); 
    mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'")); 

    Item t1 = mapper.readValue(jsonString, Item.class); 
0

@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssZ") 
private Date createdAt; 

のTestCase日までのSimpleDateFormatを変更してみてください:

@Test 
    public void test() throws Exception{ 

     ObjectMapper mapper=new ObjectMapper();  
     SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
     Date date=new Date();  
     TestClass test= new TestClass(); 
     test.setCreatedAt(date); 
     String input=mapper.writeValueAsString(test); 
     TestClass testClass=(TestClass)mapper.readValue(input,TestClass.class); 
     System.out.println("testClass"+testClass.toString()); 
    } 

     @JsonRootName("test") 
     protected static class TestClass{ 

      @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssZ") 
      private Date createdAt; 

     } 

を応答:

input: {"createdAt":"2017-01-07T17:51:03+0000"} 
    output :testClass [createdAt=Sat Jan 07 23:21:03 IST 2017] 
関連する問題