0
我在将Json对象列表转换为Java列表时遇到了一些问题。我正在使用GSon来做到这一点。 我有以下的Json列表:Gson -Json列表到Java列表<Object>
{"player":
[
{"id":"1","age":"25","name":"Neuer"},
{"id":"2","age":"26","name":"Cristiano Ronaldo"},
{"id":"3","age":"24","name":"Lionel Messi"}
]
}
和我有以下Java对象:
public class PlayerDTO implements Serializable {
private int id;
private String name;
private int age;
//Getters and Setters
}
在我的Java类我做:
Type collectionType = new TypeToken<ArrayList<PlayerDTO>>(){}.getType();
List<PlayerDTO> players = gson.fromJson(jsonString, collectionType);
但是,当Gson试图转换Json时T I收到错误:
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
at com.google.gson.Gson.fromJson(Gson.java:817)
at com.google.gson.Gson.fromJson(Gson.java:770)
at com.google.gson.Gson.fromJson(Gson.java:719)
at com.google.gson.Gson.fromJson(Gson.java:691)
at br.com.test.TesteGson.main(TesteGson.java:33)
Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:351)
at com.google.gson.internal.bind.ArrayTypeAdapter.read(ArrayTypeAdapter.java:70)
at com.google.gson.Gson.fromJson(Gson.java:805)
... 4 more
我所知,这是因为在GSON期待JSON的没有对JSON字符串的开头“玩家”。你可以帮我吗?谢谢!
我的建议是建立一个'PlayerCollection'类型的含有适当的球员名单属性.. – user2864740 2014-08-28 19:54:01
(?)无论如何,请参阅http://stackoverflow.com/questions/12004338/skip-root-element-while-deserializing-json - 但这些方法看起来很烂 – user2864740 2014-08-28 19:56:41
看来gson现在与[流api](https://网站。 google.com/site/gso N /流)使用它可以避免额外的解析。 – 2014-08-28 20:09:14