0

我似乎无法理解如何使用 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;
  }

}

最后是一个看起来像这样的用户类:

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);
4

1 回答 1

1

你确定你的示例 JSON 是正确的吗?它似乎不是一个事物列表,只定义了一个用户。

此外,您的用户获取器和设置器应遵循获取/设置模式并被调用

public List<User> getUsers()
public void setUsers(List<User> users)

此外,您可以遵循 Java 小写约定并指示 Gson 使用不同的大小写。假设您的 JSON 中只有一个用户条目。如果您将 Users 属性更改为 User 而不是列表,这将让您解析您提供的代码段。

@SerializedName("Users")
private User user;

因此,如果您想要一个用户列表,您应该在 json 中找到它,这应该可以让您将其解析为一个列表,!请注意,您需要包含对象,例如:

{"users" : [{id:"one"}, ...]}

正如评论中指出的那样。

于 2012-05-20T22:55:46.697 回答