我有以下课程:
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 = "";
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个json像下面这样的字符串:
[
{
"id": 1,
"name": "First Name",
"phoneno": "0123452",
},
{
"id": 2,
"name": "Second Name",
"phoneno": "0123452",
},
{
"id": 3,
"name": "Third Name",
"phoneno": "0123455",
}
]
Run Code Online (Sandbox Code Playgroud)
我可以很容易地从转换Collection的UserObject到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);
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将转换JSON string到collection的objects?我发现我可以使用,gson.fromJson()但不知道如何使用Collection.请帮忙.
给定此 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
}
Run Code Online (Sandbox Code Playgroud)
然后将其转换,使用
Data data = gson.fromJson(this.json, Data.class);
Run Code Online (Sandbox Code Playgroud)
要获得用户,请使用
List<User> users = data.getUsers();
Run Code Online (Sandbox Code Playgroud)
下面的代码可以让你得到Collection的UserObject
Type token = new TypeToken<Collection<UserObject>>() {}.getType();
Collection<UserObject> result = gson.fromJson(json, token);
Run Code Online (Sandbox Code Playgroud)
此外,请注意json问题中提供的内容无效,因为phoneno字段后面有一个额外的逗号.这是正确的:
[
{
"id": 1,
"name": "First Name",
"phoneno": "0123452"
},
{
"id": 2,
"name": "Second Name",
"phoneno": "0123452"
},
{
"id": 3,
"name": "Third Name",
"phoneno": "0123455"
}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6995 次 |
| 最近记录: |