Sto tentando di utilizzare Gson per deserializzare un array JSON, ma attualmente sto ricevendo una JSONSyntaxException. La stringa json è stata creata da un servizio Web .NET MVC3 che utilizza JsonResult (ovvero, non sto creando manualmente il json, è stato creato da una libreria che so funzionare su molte altre piattaforme).Gson: JsonSyntaxException in data
Questa è la JSON:
[{"PostID":1,"StudentID":39,"StudentName":"Joe Blow",
"Text":"Test message.","CreateDate":"\/Date(1350178408267)\/",
"ModDate":"\/Date(1350178408267)\/","CommentCount":0}]
Questo è il codice:
public class Post {
public int PostID;
public int StudentID;
public String StudentName;
public String Text;
public Date CreateDate;
public Date ModDate;
public Post() { }
}
Type listOfPosts = new TypeToken<ArrayList<Post>>(){}.getType();
ArrayList<Post> posts = new Gson().fromJson(json, listOfPosts);
L'eccezione dice che il formato della data non è valida:
com.google.gson.JsonSyntaxException: /Date(1350178408267)/
qualcuno che sa cosa sta succedendo sopra?
Questo è il modo corretto per farlo. Dato che Microsoft ha creato il proprio formato di data che nessun altro usa, non trovo sorprendente che Gson non lo supporti immediatamente. Perché mai non usano solo ISO-8601 come persone sane? – GreyBeardedGeek
Non ne sono sicuro, ma quello che mi ha davvero confuso è che ho usato altre librerie di analisi di Json (su altre piattaforme non Microsoft) che gestiscono bene. Gson è stato il primo che ho trovato che non l'ha gestito fuori dagli schemi. – mtmurdock
@GreyBeardedGeek: non esiste un formato * datetime ISO-8601 * sane in JSON. Non esiste affatto un formato datetime in JSON; quello che intendi è solo una stringa semplice. Non ricordo la ragione esatta (e non riesco a trovarla più) perché ne avevano bisogno e perché l'hanno scelta in questo modo, ma era abbastanza convincente. Forse dovremmo chiedere invece perché non c'è un formato datetime in JSON? E no, non sono davvero niente come un fan di M $. – maaartinus