2017-01-07 5 views
0

Я получаю JSON с датой, отформатированный как это:Deserialize Json с Т буквальным

yyyy-MM-ddTHH:mm:ssZ 

Но я не могу десериализации ее должным образом. Я пробовал что-то вроде этого:

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

с десериализаторами Джексона и с различными типами. Работает Nothings.

+0

Эта ссылка может помочь вам - HTTP: //wiki.fasterxml. ком/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 + 
     '}'; 
} 
} 

Настройка ObjectMapper с DateFormat вы хотите использовать.

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

Попробуйте изменить SimpleDateFormat к Дата

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

TestCase:

@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]