我有这个JSON数据
{"mydata":{"numbers":[12,23,34]}}
通过获取JSONObject,我得到以下对象:
JSONObject obj = mydataObj.getJSONObject("mydata");
所以obj是这样的:
{"numbers":[12,23,34]}
我需要使用数字元素。所以我将使用for循环来使用元素。
String numbers = myObject.getString("numbers");
这给出了一个这样的字符串:
["12","23","34"]
如何将其转换为数组或arraylist?
所以我将得到一个值为12,23和34的数组。
编辑:获取JSONArray的Array,ArrayList后,我将比较“numbers1_Array”和“numbers2_Array”。然后我会找到第一个数组中存在但第二个数组中不存在的元素。因此选择与比较操作相关的数据结构类型更容易。
答案 0 :(得分:3)
您可以尝试getJSONArray()
而不是getString()
,然后只需遍历JSONArray
并构建您的ArrayList
。
答案 1 :(得分:1)
试试这个
JSONArray jArray = jObj.getJSONArray("numbers");
List list<Long> = new ArrayList<Long>();
for(int i=0; i < jArray .length(); i++)
list.add(new Long((String)jArray .get(i)));
答案 2 :(得分:0)
你拥有的是
JSONObject obj ===>>> {"numbers":[12,23,34]}
现在这个对象是一个数组 所以你不能只通过传递名称来访问数组 你必须做这样的事情
JSONArray numbers = (JSONArray) jsonObject.get("numbers");
Iterator<Integer> iterator = numbers.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
// this iterator.next() is your element from the JSON array
//you can store like
// int val = iterator.next()
// better you store this in an array
}
答案 3 :(得分:0)
其他解决方案很好,您也可以使用这样的字符串
numbers=numbers.substring(1,s.length()-1).replaceAll("\"","");
List<String> sample = new ArrayList<String>();
sample.addAll(Arrays.asList(s.split(",")));
答案 4 :(得分:0)
你可以用Guava这样做。 https://github.com/google/guava
String numbers = myObject.getString("numbers");
List list = new ArrayList();
JSONArray numbersJsonArray = new JSONArray(numbers);
for (int i = 0; i < numbersJsonArray.length(); i ++) {
list.add(numbersJsonArray.getInt(i));
}// after this loop if what you need is the array list you have it all in the list
int[] array = Ints.toArray(list); // if you need array of ints