将JSONArray字符串转换为数组

我有这个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”。 然后我会找到第一个数组中存在但第二个数组中不存在的元素。 因此选择与比较操作相关的数据结构类型更容易。

您可以尝试使用getJSONArray()而不是getString() ,然后简单地遍历JSONArray并构建您的ArrayList

试试这个

  JSONArray jArray = jObj.getJSONArray("numbers"); List list = new ArrayList(); for(int i=0; i < jArray .length(); i++) list.add(new Long((String)jArray .get(i))); 

在JSONObject中获取对象后,您拥有的是什么

 JSONObject obj ===>>> {"numbers":[12,23,34]} 

现在这个对象是一个数组,所以你不能只通过传递名称来访问一个数组,你必须做这样的事情

 JSONArray numbers = (JSONArray) jsonObject.get("numbers"); Iterator 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 } 

其他解决方案很好,你也可以这样做你的字符串

 numbers=numbers.substring(1,s.length()-1).replaceAll("\"",""); List sample = new ArrayList(); sample.addAll(Arrays.asList(s.split(","))); 

你可以用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