我正在从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,知道怎么做吗?
答案 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包含最终输出。