首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GSON解析JSON -设置类层次结构

使用GSON解析JSON -设置类层次结构
EN

Stack Overflow用户
提问于 2012-05-17 09:35:44
回答 1查看 656关注 0票数 0

我似乎无法理解如何使用GSON为JSON转换设置类层次结构。

我的JSON看起来像这样:

代码语言:javascript
复制
{
  "Users": {
    "id": 1,
    "name": "Jim",
    "location": "Huntsville"
  }
}

我的用户列表类如下所示:

代码语言:javascript
复制
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类,如下所示:

代码语言:javascript
复制
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文件)

代码语言:javascript
复制
        BufferedReader br = new BufferedReader(new FileReader(Environment.getExternalStorageDirectory() + "/user.json"));
        UserList userList = gson.fromJson(br, UserList.class);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-21 06:55:47

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

此外,用户的getter和getter应该遵循get/set模式并被调用

代码语言:javascript
复制
public List<User> getUsers()
public void setUsers(List<User> users)

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

代码语言:javascript
复制
@SerializedName("Users")
private User user;

因此,如果您想要一个用户列表,您应该可以在json中找到它,这应该允许您将其解析为一个列表!请注意,您需要有对象,这些对象是封闭的,例如:

代码语言:javascript
复制
{"users" : [{id:"one"}, ...]}

正如评论中指出的那样。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10628843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档