将JSON响应转换为List <T>

use*_*224 4 java android json list gson

我是GSON的新手.我需要将以下JSON响应转换为List.

JSON响应:

{
    "data": [{
        "data": {
            "ac_id": "000",
            "user_id": "000",
            "title": "AAA"
        }
    }, {
        "data": {
            "ac_id": "000",
            "user_id": "000",
            "title": "AAA"
        }
    }]
}
Run Code Online (Sandbox Code Playgroud)

我有一个类来投射数据

帐户.java的

public class Account {

     public int ac_id;
     public int user_id;
     public String title;

    @Override
    public String toString(){
         return "Account{"+
         "ac_id="+ac_id+
         ", user_id="+user_id+
         ", title="+title+'}';

    }

}
Run Code Online (Sandbox Code Playgroud)

当我在课堂上发表回复时,我得到:

[Account{ac_id="000", user_id="000", title="AAA"}, Account{ac_id="000", user_id="000", title="AAA"}]
Run Code Online (Sandbox Code Playgroud)

现在我需要将这两个值放入一个List<Account>.
你有什么建议?

Eli*_*s N 5

JSONObject data = new JSONObject(response);
JSONArray accounts = data.getJSONArray("data");    
List<Account> accountList = new Gson().fromJson(accounts.toString(), new TypeToken<ArrayList<Account>>(){}.getType());
Run Code Online (Sandbox Code Playgroud)

如果您无法更改JSON响应以删除内部"数据"键,则可以使用以下命令:

Gson gson = new Gson();
ArrayList<Account> accountList = new ArrayList<Account>();
JSONArray accounts = data.getJSONArray("data");  
for (int i = 0; i < accounts.length(); i++) {
  JSONObject a = accounts.getJSONObject(i).getJSONObject("data");
  accountList.add(gson.fromJson(a.toString(), Account.class));
}
Run Code Online (Sandbox Code Playgroud)