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 の例が正しいと確信していますか? もののリストではないようです.1人のユーザーが定義されているだけです.

さらに、ユーザーのゲッターとセッターは、get/set パターンに従って呼び出される必要があります。

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

また、小文字の Java 規則に従って、Gson に別の大文字小文字を使用するように指示することもできます。JSON にユーザーのエントリが 1 つしかないと仮定します。これにより、Users プロパティを User not a list に変更すると、提供したスニピットを解析できます。

@SerializedName("Users")
private User user;

したがって、ユーザーのリストが必要な場合は、json で見つける必要があります。これにより、リストとして解析できるはずです。次のように囲まれたオブジェクトが必要であることに注意してください。

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

コメントで指摘されているように。

于 2012-05-20T22:55:46.697 に答える