2013-05-14 97 views
0

我有這樣的JSON數據轉換JSONArray字符串數組

{"mydata":{"numbers":[12,23,34]}} 

通過採取JSONObject的我獲得以下對象:

JSONObject obj = mydataObj.getJSONObject("mydata"); 

所以obj是這樣的:

{"numbers":[12,23,34]} 

我需要使用數字元素。所以我會做一個for-loop來使用元素。

String numbers = myObject.getString("numbers"); 

這給了像這樣的字符串:

["12","23","34"] 

我怎樣才能將它轉換爲數組或數組列表?
所以我將有一個數組值爲12,23和34.

編輯:獲取數組,ArrayList的JSONArray後,我會比較「numbers1_Array」和「numbers2_Array」。然後我會找到第一個數組中存在的元素,但不存在於第二個數組中。因此選擇與哪個比較操作相關的數據結構類型更容易。

回答

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))); 
+0

@trante嘗試這一次。它應該工作 – PSR 2013-05-14 13:35:37

+0

我編輯的問題。 – trante 2013-05-14 13:41:24

+0

什麼是第二陣列,你有嗎? – PSR 2013-05-14 13:43:50

3

你可以嘗試getJSONArray()代替getString(),然後簡單地遍歷JSONArray,建立自己的ArrayList

+0

是否可以與JSONArrays進行比較並找出它們之間的差異? – trante 2013-05-14 13:40:51

+0

我還沒試過。如果你只是想知道它們是否相同,你可能會放棄比較它們的字符串表示,否則你可能需要迭代。 – Vlad 2013-05-14 13:56:36

0

獲取對象的JSONObject 後,你有什麼是

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 
     } 
0

其他解決方案都很好,你也可以做你的字符串這樣

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

你可以用番石榴這樣做。 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