我似乎无法理解如何使用GSON为JSON转换设置类层次结构。
我的JSON看起来像这样:
{
"Users": {
"id": 1,
"name": "Jim",
"location": "Huntsville"
}
}我的用户列表类如下所示:
public class UserList {
public static List<User> Users;
@SuppressWarnings("static-access")
public void setUserList(List<User> userList){
this.Users = userList;
}
public List<User> getUserList(){
return Users;
}}
最后是一个user类,如下所示:
public class User {
private int id;
private String name;
private String location;
public int getId(){
return id;
}
public String getName(){
return name;
}
public String getLocation(){
return location;
}
public String toString(){
return("User: [id=" + id + "], [name=" + name + "], [location=" + location + "]");
}}
有人介意帮我找个正确的方向吗?我会很感激的!
编辑:
忘记显示我的解析代码了..(只需从SDCard读取示例JSON文件)
BufferedReader br = new BufferedReader(new FileReader(Environment.getExternalStorageDirectory() + "/user.json"));
UserList userList = gson.fromJson(br, UserList.class);发布于 2012-05-21 06:55:47
您确定您的示例JSON是正确的吗?它似乎不是一个列表,只定义了一个用户。
此外,用户的getter和getter应该遵循get/set模式并被调用
public List<User> getUsers()
public void setUsers(List<User> users)此外,您还可以遵循小型大小写的Java约定,并指示Gson使用不同的大小写。假设您的JSON中只有一个用户条目。如果您将Users属性更改为User而不是a list,这将允许您解析您提供的代码片段。
@SerializedName("Users")
private User user;因此,如果您想要一个用户列表,您应该可以在json中找到它,这应该允许您将其解析为一个列表!请注意,您需要有对象,这些对象是封闭的,例如:
{"users" : [{id:"one"}, ...]}正如评论中指出的那样。
https://stackoverflow.com/questions/10628843
复制相似问题