2013-01-07 3 views
2

내 JSON 입력은 다음과 같습니다GSON : 구문 분석 할 수 없습니다 날짜

{ user: "sample-user", date : 1225864800 } 

그리고 내 DateDeserializer 클래스는 다음과 같습니다

private class DateDeserializer implements JsonDeserializer<Date> 
{ 
    public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) 
     throws JsonParseException 
    { 
     System.out.println("Deserializer..."); 
     return new Date(json.getAsJsonPrimitive().getAsLong()); 
    } 
} 

GsonBuilder gsonBuilder = new GsonBuilder(); 
gsonBuilder.registerTypeAdapter(Date.class, new DateDeserializer()); 
gson.fromJson(new FileReader("input.json"), MyType.class); 

에도 모든 설정 후, 나는군요

java.text.ParseException: Unparseable Date: "1225864800" 

내가 여기서 뭐 잘못하고 있니? 도와주세요.

+1

그것은 신기원 타임 스탬프입니다 :

무슨 뜻인지 잘 설명하기 위해, 여기에 코드는 & 붙여 넣기를 & 실행을 복사 할 수 있습니다. [링크] (http://en.wikipedia.org/wiki/Epoch_ (reference_date)) – Kevindra

+0

도움이 될 수도 있습니다 - http://stackoverflow.com/questions/5489083/how-can-i-make-jackson- 역 직렬화 (deserialize-a-date-object) –

+2

실제 코드, 실제 JSON 및 실제 스택 추적을 게시하십시오. 여기에있는 코드는 예외를 던져서는 안되며 JSON이 유효한 JSON이 아닙니다. –

답변

0

날짜 필드뿐만 아니라 날짜로 전체 Json 구조를 deserialize하려고합니다. 당신이 (있는 경우) 다른 장소에 표준 날짜 직렬화를 유지하고, 단지 MyType 내부에 특정 역 직렬화를 제한 할 수 있도록 전체 MyType 클래스 어댑터를 쓸 수

User user = jsonElement.getAsJsonObject().get("user").getAsString(); 
    Date date = new Date(jsonElement.getAsJsonObject().get("date").getAsLong()); 
0

: 당신은 뭔가를해야 할 것입니다.

package stackoverflow.questions.q14197557; 

import java.lang.reflect.Type; 
import java.util.Date; 

import com.google.gson.*; 

public class Q14197557 { 

    public static class MyType { 

     String user; 
     Date date; 
     @Override 
     public String toString() { 
      return "MySample [user=" + user + ", date=" + date + "]"; 
     } 

    } 

    public static class MySampleDeserializer implements JsonDeserializer<MyType> { 
     public MyType deserialize(JsonElement json, Type typeOfT, 
       JsonDeserializationContext context) throws JsonParseException { 

      if (json == null) 
       return null; 
      else { 
       MyType s = new MyType(); 
       s.user = json.getAsJsonObject().get("user").getAsString(); 
       s.date = new Date(json.getAsJsonObject().get("date").getAsLong()); 
       return s; 

      } 

     } 
    } 

    public static void main(String[] args) { 

     String json = "{ user: \"sample-user\", date : 1225864800 }"; 
     GsonBuilder gsonBuilder = new GsonBuilder(); 
     gsonBuilder.registerTypeAdapter(MyType.class, new MySampleDeserializer()); 
     MyType s = gsonBuilder.create().fromJson(json, MyType.class); 

     System.out.println("My Type: " + s); 
    } 

} 
관련 문제