簡體   English   中英

如何使用Java將JSON字符串解析為ArrayList?

[英]How to parse JSON string into ArrayList using Java?

我正在從API獲得以下響應

String response={"balance":1000,
  "lastliability":2000,"profitarray":[[1,2,3],[67,88,99]],"previous":[99,88]}

我正在嘗試將利潤數組轉換為Java中的ArrayList

    JSONObject res=new JSONObject(response);
    ArrayList<ArrayList<Integer>> temp=res.getString("profitarray")//something like this
ArrayList<Integer>yy=res.getString("previous");

顯然,res.getstring的輸出將是String,我想將它們轉換為ArrayList,知道怎么做嗎?

您可以使用JsonArray從JSON響應中提取數組。 稍后,您可以使用Collections API將該數組轉換為ArrayList。

    JsonObject res = new JsonObject(response);
    JsonArray array1 = res.getJsonArray("profitarray");
    JsonArray array2 = res.getJsonArray("previous");

    ArrayList<JsonObject> arrayList1 = new ArrayList(array1.length());
    ArrayList<JsonObject> arrayList2 = new ArrayList(array2.length());

    for(int i=0;i < array1.length();i++){
    arrayList1.add(array1.getJsonObject(i));
}
    for(int j=0;j < array2.length();j++){
    arrayList2.add(array2.getJsonObject(j));
}

關鍵是創建一個對響應進行建模的Java類 請使用Google Gson查看此示例。

回應類別:

import java.util.ArrayList;

public class Response {
//    int balance;
//    int lastLiability;
//    ArrayList<Integer> previous;
    ArrayList<ArrayList<Integer>> profitarray;
}

Gson示例:

import com.google.gson.Gson;

public class GsonExample {
    public static void main(String[] args) {
        String json = "{\"balance\":1000,\"lastliability\":2000,\"profitarray\":[[1,2,3],[67,88,99]],\"previous\":[99,88]}";

        Response response = new Gson().fromJson(json, Response.class);
        System.out.println(response.profitarray);
    }
}

我想您應該添加訪問器,equals / hashCode和所有這些雜音,但是您明白了。

可能是一種復雜的方法,但是由於您需要ArrayList>,因此我們

public static void main(String[] args) {
    String response = "{\"balance\":1000,\n" +
            "  \"lastliability\":2000,\"profitarray\":[[1,2,3],[67,88,99]],\"previous\":[99,88]}";
    JSONObject res=new JSONObject(response);
    JSONArray array = res.getJSONArray("profitarray");
    ArrayList<JSONArray> profitList = new ArrayList<>();
    for (int i = 0; i < array.length(); i++){
        profitList.add(array.getJSONArray(i));
    }
    ArrayList<ArrayList<Integer>> finalList = new ArrayList<>();
    ArrayList<Integer> list1 = new ArrayList<>();
    for (int i = 0; i < profitList.size(); i++){
        JSONArray array1 = profitList.get(i);
        list1 = new ArrayList<>();
        for (int j = 0; j < array1.length(); j++){
            list1.add(array1.getInt(j));
        }
        finalList.add(list1);
    }
}

ArrayList finalList包含最終輸出。

暫無
暫無

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

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