Android 如何使用GSON将JSON字符串转换为对象集合?
我有以下课程:Android 如何使用GSON将JSON字符串转换为对象集合?,android,json,gson,Android,Json,Gson,我有以下课程: public class UserObject implements Serializable { public Integer id; public String name; public String phoneno; public UserObject() { this.id = new Integer(0); this.name = ""; this.phoneno = "";
public class UserObject implements Serializable
{
public Integer id;
public String name;
public String phoneno;
public UserObject()
{
this.id = new Integer(0);
this.name = "";
this.phoneno = "";
}
}
我有一个json
字符串,如下所示:
[
{
"id": 1,
"name": "First Name",
"phoneno": "0123452",
},
{
"id": 2,
"name": "Second Name",
"phoneno": "0123452",
},
{
"id": 3,
"name": "Third Name",
"phoneno": "0123455",
}
]
我可以使用以下代码轻松地从UserObject
的Collection
转换为JSON
:
Collection users = new Vector();
UserObject userObj = new UserObject();
userObj.id=1; userObj.name="First Name"; userObj.phoneno="0123451";
users.add(userObj);
userObj.id=2; userObj.name="Second Name"; userObj.phoneno="0123452";
users.add(userObj);
userObj.id=3; userObj.name="Second Name"; userObj.phoneno="0123455";
users.add(userObj);
Gson gson = new Gson();
String json = gson.toJson(users);
但是我不知道如何将
JSON
字符串
转换为对象的集合
?我发现我可以使用gson.fromJson()
,但不知道如何使用集合。请提供帮助。给定此JSON,您的包装器类应如下所示:
public class Data {
private List<User> users;
// +getters/setters
}
public class User {
private String name;
private String email;
private List<User> friends;
// +getters/setters
}
要获得用户,请使用
List<User> users = data.getUsers();
List users=data.getUsers();
以下代码允许您获取用户对象的集合
Type token = new TypeToken<Collection<UserObject>>() {}.getType();
Collection<UserObject> result = gson.fromJson(json, token);
你能补充一些细节吗?我还是不清楚。什么是包装类?我需要创建新的类数据吗?getUsers()的结构和返回值是什么?@ray yes您需要创建一个需要类数据,因为(DO)结构将命名和发送电子邮件,或者您可以根据您的实现更改accd,因为您还需要电话号码。非常感谢您指导这样简单的方法。它像魔法一样工作。
Type token = new TypeToken<Collection<UserObject>>() {}.getType();
Collection<UserObject> result = gson.fromJson(json, token);
[
{
"id": 1,
"name": "First Name",
"phoneno": "0123452"
},
{
"id": 2,
"name": "Second Name",
"phoneno": "0123452"
},
{
"id": 3,
"name": "Third Name",
"phoneno": "0123455"
}
]