2014-03-13 34 views
2

我想創建一個JSONArray在鏈接文件夾中的Android項目文件中,並且eclipse突然(之前沒有這樣做)給了我錯誤: 呼叫需要API級19(電流min爲14):新org.json.JSONArrayAndroid上的新JSONArray(String [])

在那裏發生的代碼如下:

String[] s = (save_val.trim().equals(""))?new String[]{}:save_val.split("\n"); 
JSONObject o = null; 
if (!Arrays.equals(s, save_names)){ 

    new JSONArray(s); // this is where the error is shown 

編輯:解實際上該方法不在API 19之前引入,但如果您使用(在我的情況下)字符串數組或其他促銷,你可以簡單地做:

JSONArray s_values = new JSONArray(); 
    for (int i = 0; i < s.length; i++){ 
     s_values.put(yourarray[i]); 
    } 

這不應該是任何慢

+0

看起來像您的SDK版本已關閉。 –

回答

6

看起來構造JSONArray(Object array)沒有出臺,直到API級別19

http://developer.android.com/reference/org/json/JSONArray.html#JSONArray(java.lang.Object)

您可以在manifest更改分鐘API版本是19或

您可以將您的Object arrayCollection arrayArrayList和使用的JSONArray集合數組構造函數可用從API 1

祝你好運!

+1

DejanRistic是對的。請記住,'jsonObject.put(「xyz」,new JSONArray(Arrays.asList(floatArray)))''會給你一個包含你的數組的數組。 float array('{「xyz」:[[1.0,2.0,3.0]]}'),而'JSONArray arr = new JSONArray(); for(float value:floatArray){arr.put(value); }; jsonObject.put(「xyz」,arr)''會反過來爲你提供一個數組,正如你所期望的那樣('{「xyz」:[1.0,2.0,3.0]'')。 – falconepl

0

您正在構建帶有字符串數組的JSONArray,根據the documentation僅適用於API級別19或更高版本。您需要使用其他構造函數,或者在清單中將最低API級別更改爲19,以使構造函數可用。

+0

我可以在哪裏看到引入它的級別(在文檔中)? (剛剛發現它,在灰色方法聲明的右側很小) – joz

+0

如果您在灰色標題欄中查看方法名稱,則它添加的API級別位於右側:) – Animatinator

0

您可以通過提供一個集合來使用替代構造函數。這將通過複製集合中給出的所有值來創建JSONArray。

JSONArray arr = new JSONArray(collection);