如何使用 gson 将 JsonObject 解析为 List<MyClass>
How to parse JsonObject to List<MyClass> using gson
我需要一个对象列表,但在获取它时遇到了问题。我是新手,有人可以帮助我吗?
我正在使用 volley 获取一个 json 对象,然后我需要转换它(我看到最好的方法是使用 gson)。下面你可以看到我的 json.
的例子
{
network: {
company: "JCDecaux",
href: "/v2/networks/dublinbikes",
id: "dublinbikes",
location: {
city: "Dublin",
country: "IE",
latitude: 53.3498053,
longitude: -6.2603097
},
name: "dublinbikes",
stations: [
{
empty_slots: 37,
extra: {
address: "Fitzwilliam Square East",
bonus: false,
connected: "1",
last_update: "1434047944",
open: true,
slots: 40,
ticket: true,
uid: 89
},
free_bikes: 3,
id: "153ff4dfb7bd8912ef91c10849129c2e",
latitude: 53.335211,
longitude: -6.2509,
name: "Fitzwilliam Square East",
timestamp: "2015-06-11T18:41:31.11Z"
},
{
empty_slots: 0,
extra: {
address: "Portobello Harbour",
bonus: false,
connected: "1",
last_update: "1434047764",
open: true,
slots: 30,
ticket: false,
uid: 34
},
free_bikes: 30,
id: "3c0cfd547a142bb651280991a412bcbe",
latitude: 53.330362,
longitude: -6.265163,
name: "Portobello Harbour",
timestamp: "2015-06-11T18:41:31.15Z"
},
...等等
车站class
public class Station {
public Station(){}
public String StationName;
public String Distance;
public String Slots;
public String Bikes;
public String LastUpdate;
//Getters and Setters ...
}
下面你可以看到我到目前为止所做的..
//stations
JSONObject jsonNetwork = new JSONObject(response.getString("network"));
Type listType = new TypeToken<ArrayList<Station>>() {
}.getType();
List<Station> yourClassList = new Gson().fromJson(jsonNetwork, listType);
但我不知道如何解析所有这些并避免我不需要的数据以及函数 Gson().fromJson
需要和 JsonArray,而我拥有的是 JsonObject
感谢您的宝贵时间!
使用下面的代码
Gson gson = new Gson();
YourClass obj = gson.fromJson(jsonObject.toString(), YourClass.class);
如果您要查找的只是电台,那么我认为您应该执行以下操作:
//stations
JSONObject jsonNetwork = new JSONObject(response.getString("network"));
JSONArray stationsArray = jsonNetwork.getJSONArray("stations");
现在,您应该将此 stationsArray 变量传递给 fromJson 方法。此外,您的 Station class 的变量名应该等于您要从 json 中提取的键名。下面是一个很好的例子link:
http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/
我需要一个对象列表,但在获取它时遇到了问题。我是新手,有人可以帮助我吗?
我正在使用 volley 获取一个 json 对象,然后我需要转换它(我看到最好的方法是使用 gson)。下面你可以看到我的 json.
的例子{
network: {
company: "JCDecaux",
href: "/v2/networks/dublinbikes",
id: "dublinbikes",
location: {
city: "Dublin",
country: "IE",
latitude: 53.3498053,
longitude: -6.2603097
},
name: "dublinbikes",
stations: [
{
empty_slots: 37,
extra: {
address: "Fitzwilliam Square East",
bonus: false,
connected: "1",
last_update: "1434047944",
open: true,
slots: 40,
ticket: true,
uid: 89
},
free_bikes: 3,
id: "153ff4dfb7bd8912ef91c10849129c2e",
latitude: 53.335211,
longitude: -6.2509,
name: "Fitzwilliam Square East",
timestamp: "2015-06-11T18:41:31.11Z"
},
{
empty_slots: 0,
extra: {
address: "Portobello Harbour",
bonus: false,
connected: "1",
last_update: "1434047764",
open: true,
slots: 30,
ticket: false,
uid: 34
},
free_bikes: 30,
id: "3c0cfd547a142bb651280991a412bcbe",
latitude: 53.330362,
longitude: -6.265163,
name: "Portobello Harbour",
timestamp: "2015-06-11T18:41:31.15Z"
},
...等等
车站class
public class Station {
public Station(){}
public String StationName;
public String Distance;
public String Slots;
public String Bikes;
public String LastUpdate;
//Getters and Setters ...
}
下面你可以看到我到目前为止所做的..
//stations
JSONObject jsonNetwork = new JSONObject(response.getString("network"));
Type listType = new TypeToken<ArrayList<Station>>() {
}.getType();
List<Station> yourClassList = new Gson().fromJson(jsonNetwork, listType);
但我不知道如何解析所有这些并避免我不需要的数据以及函数 Gson().fromJson
需要和 JsonArray,而我拥有的是 JsonObject
感谢您的宝贵时间!
使用下面的代码
Gson gson = new Gson();
YourClass obj = gson.fromJson(jsonObject.toString(), YourClass.class);
如果您要查找的只是电台,那么我认为您应该执行以下操作:
//stations
JSONObject jsonNetwork = new JSONObject(response.getString("network"));
JSONArray stationsArray = jsonNetwork.getJSONArray("stations");
现在,您应该将此 stationsArray 变量传递给 fromJson 方法。此外,您的 Station class 的变量名应该等于您要从 json 中提取的键名。下面是一个很好的例子link:
http://www.mkyong.com/java/how-do-convert-java-object-to-from-json-format-gson-api/