如何使用Java将JSON字符串解析为ArrayList?

时间:2018-11-24 08:51:17

标签: java

我正在从API获得以下响应

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

我正在尝试像Java那样将ProfitArray转换为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,知道怎么做吗?

3 个答案:

答案 0 :(得分:0)

您可以使用 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));
}

答案 1 :(得分:0)

关键是要创建建模响应的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和所有杂音,但您会明白的。

答案 2 :(得分:0)

可能是一种复杂的方法,但是由于您需要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包含最终输出。