簡體   English   中英

Android Volley將JSONArray轉換為ArrayList <MyObject>

[英]Android Volley Convert JSONArray to ArrayList<MyObject>

我有JsonObject

JSON對象

我有返回JSONArray的方法。 我想傳遞第一個字段並僅獲取數據數組。 然后將其轉換為我的數組列表。 我真的很高興收到您的任何建議。

  void getUsersBeacons(){
    type = new TypeToken<List<Beacon>>(){}.getType();
    JSONArray myReq = new JSONArray(Request.Method.GET, Url + testId + Url2, new Response.Listener<JSONArray>() {
        @Override
        public void onResponse(JSONArray response) {
            try{
            JSONArray buffArray = response.getJSONArray(2);
               JSONArray bufJsonArray = response.getJSONArray(1);
                beaconsList = converter.fromJson(bufJsonArray.toString(), type);
            }catch (Exception e){
                e.printStackTrace();
            }
        }


    });
    VolleySingleton.getInstance(getActivity().getApplicationContext()).addToRequestQueue(myReq);
}

信標類別:

public class Beacon {

private Object idBeacon;
private String friendlyName;
private String imageUrl;

public Beacon(Object idBeacon, String friendlyName, String imageUrl) {
    this.idBeacon = idBeacon;
    this.friendlyName = friendlyName;
    this.imageUrl = imageUrl;
}

public Object getIdBeacon() {
    return idBeacon;
}

public void setIdBeacon(Object idBeacon) {
    this.idBeacon = idBeacon;
}

public String getFriendlyName() {
    return friendlyName;
}

public void setFriendlyName(String friendlyName) {
    this.friendlyName = friendlyName;
}

public String getImageUrl() {
    return imageUrl;
}

public void setImageUrl(String imageUrl) {
    this.imageUrl = imageUrl;
}

}

如果我理解正確,則最好傳入JSONArray而不是字符串並解析其內容,如下所示:

public static List<Beacon> fromJson(JSONArray array)
{
  ArrayList<Beacon> res = new ArrayList<>();
  for (int i = 0; i < array.length(); ++i)
  {
    JSONObject beacon = array.getJSONObject(i);
    res.add(new Beacon(beacon.getInt("beaconId"), beacon.getString("name"), beacon.getString("imageUrl"))));
  }

  return res;
}

UPD:為了回應您的評論,您必須使用Response.Listener<JSONObject>而不是Response.Listener<JSONArray> ,然后執行以下操作:

public void onResponse(JSONObject response)
{
  JSONArray array = response.getJSONArray("data");
  converter.fromJson(array);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM