2013-09-27 3 views
5

Ich nehme diese Zeichenkette und analysiere sie zu einem Javascript-Objekt.String Parse, JSON Stringify & GSON Parse des Datums schlägt fehl

{ 
"startTime": 233432420233, 
"endTime": 233432431000, 
"bufferingDelays": [ 
    { 
     "time": 233432420233, 
     "delayLength": 100 
    }, 
    { 
     "time": 233432420433, 
     "delayLength": 50 
    }, 
    { 
     "time": 233432420833, 
     "delayLength": 75 
    } 
    ] 
} 

Hier ist der Javascript-Code die Analyse durch die Umwandlung in ein JSON-String gefolgt tun:

var reportObject = jQuery.parseJSON(reportJSONString); 

reportObject.startTime = new Date(reportObject.startTime); 
reportObject.endTime = new Date(reportObject.endTime); 

for (var i = 0; i < reportObject.bufferingDelays.length; i++) 
{       
    var delay = reportObject.bufferingDelays[i]; 
    delay.time = new Date(delay.time); 

    reportObject.bufferingDelays[i] = delay; 
} 

var reportObjectFinalString = JSON.stringify(reportObject); 

Einer der Termine durch die JSON Konvertierung erzeugen, ist dies: 1977-05-25T18:20:20.233Z. Ich denke, das schleppende 'Z' ist schlecht.

nun in Java ich versuchen, es in ein Java-Objekt zu analysieren, wie so:

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ").create(); 
Report report = gson.fromJson(jsonBuilder.toString(), Report.class); 

Aber ich bekomme diese Ausnahme:

SEVERE: Servlet.service() for servlet [ReportServlet] in context with path [/Report] threw exception [com.google.gson.JsonSyntaxException: 1977-05-25T18:20:20.233Z] with root cause 
java.text.ParseException: Unparseable date: "1977-05-25T18:20:20.233Z" 

Antwort

10

Sie benötigen die Z zu

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'").create(); 
zu zitieren

Die SimpleDateFormat (in der GsonBuilder verwendet) nimmt die nicht Z bedeutet eine Zeitzone, die Ihre Datumszeichenfolge nicht hat.

+0

Vielen Dank. Wird als beantwortet markieren. –

+1

@Guido Gern geschehen! –