Próbuję użyć Gson do deserializacji tablicy json, ale obecnie otrzymuję JsonSyntaxException. Ciąg json został utworzony przez usługę sieci web MVC3 .NET przy użyciu JsonResult (co oznacza, nie jestem ręcznie tworzenia json, jest tworzony przez biblioteki, które wiem, aby pracować na kilku innych platformach).Gson: JsonSyntaxException na datę
To json:
[{"PostID":1,"StudentID":39,"StudentName":"Joe Blow",
"Text":"Test message.","CreateDate":"\/Date(1350178408267)\/",
"ModDate":"\/Date(1350178408267)\/","CommentCount":0}]
Jest to kod:
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);
Wyjątkiem mówi, że format daty jest nieprawidłowy:
com.google.gson.JsonSyntaxException: /Date(1350178408267)/
ktoś wie co się dzieje na?
To jest właściwy sposób to zrobić. Biorąc pod uwagę, że Microsoft przygotował własny format dat, którego nikt inny nie używa, nie dziwi mnie, że Gson nie obsługuje go po wyjęciu z pudełka. Dlaczego, u licha, po prostu nie używają ISO-8601 jak zdrowi ludzie? – GreyBeardedGeek
Nie jestem pewien, ale to, co naprawdę mnie zdezorientowało, to że korzystałem z innych bibliotek analizujących Json (na innych platformach innych niż Microsoft), które radzą sobie z tym dobrze. Gson był pierwszym, którego odkryłem, że nie poradził sobie z tym po wyjęciu z pudełka. – mtmurdock
@GreyBeardedGeek: Nie ma * rozsądnego formatu datetime ISO-8601 * w JSON. W JSON nie ma formatu datetime; masz na myśli tylko zwykły ciąg znaków. Nie pamiętam dokładnie powodu (i nie mogę go już znaleźć), dlaczego go potrzebowali i dlaczego wybrali tę drogę, ale było to całkiem przekonujące. Może powinniśmy zapytać, dlaczego w JSON nie ma formatu datetime? I nie, naprawdę nie jestem fanem M $. – maaartinus