2012-07-03 515 views
0

我想操縱一個JsonArray看起來像另一個JsonArray。 我對現有的JsonArray實現了一些字符串方法。現在我想把它放回另一個JsonArray。如何將字符串轉換爲JsonArray?

CODE

   Log.d("defaultArrayShuffled", defaultArray.toString()); 

       String temp = defaultArray.toString(); 
       String temp1= temp.replaceAll("_white_", "_"); 
       Log.d("temp1", temp1); 

       JSONObject temp2 = new JSONObject(); 
       temp2.put("arr", temp1); 
       Log.d("temp2", temp2.toString()); 
       replacingArray = temp2.getJSONArray("arr"); 

logcat的

07-03 19:16:37.310: D/defaultArrayShuffled(8863): ["findhidden\/o_white_64.png","findhidden\/x_white_64.png","findhidden\/f_white_64.png","findhidden\/b_white_64.png","findhidden\/a_white_64.png","findhidden\/g_white_64.png","findhidden\/p_white_64.png","findhidden\/u_white_64.png","findhidden\/n_white_64.png","findhidden\/j_white_64.png","findhidden\/y_white_64.png","findhidden\/q_white_64.png","findhidden\/l_white_64.png","findhidden\/t_white_64.png","findhidden\/h_white_64.png","findhidden\/v_white_64.png","findhidden\/r_white_64.png","findhidden\/k_white_64.png","findhidden\/m_white_64.png","findhidden\/c_white_64.png","findhidden\/z_white_64.png","findhidden\/s_white_64.png","findhidden\/w_white_64.png","findhidden\/d_white_64.png","findhidden\/i_white_64.png","findhidden\/e_white_64.png"] 
07-03 19:16:37.310: D/temp1(8863): ["findhidden\/o_64.png","findhidden\/x_64.png","findhidden\/f_64.png","findhidden\/b_64.png","findhidden\/a_64.png","findhidden\/g_64.png","findhidden\/p_64.png","findhidden\/u_64.png","findhidden\/n_64.png","findhidden\/j_64.png","findhidden\/y_64.png","findhidden\/q_64.png","findhidden\/l_64.png","findhidden\/t_64.png","findhidden\/h_64.png","findhidden\/v_64.png","findhidden\/r_64.png","findhidden\/k_64.png","findhidden\/m_64.png","findhidden\/c_64.png","findhidden\/z_64.png","findhidden\/s_64.png","findhidden\/w_64.png","findhidden\/d_64.png","findhidden\/i_64.png","findhidden\/e_64.png"] 
07-03 19:16:37.310: D/temp2(8863): {"arr":"[\"findhidden\\\/o_64.png\",\"findhidden\\\/x_64.png\",\"findhidden\\\/f_64.png\",\"findhidden\\\/b_64.png\",\"findhidden\\\/a_64.png\",\"findhidden\\\/g_64.png\",\"findhidden\\\/p_64.png\",\"findhidden\\\/u_64.png\",\"findhidden\\\/n_64.png\",\"findhidden\\\/j_64.png\",\"findhidden\\\/y_64.png\",\"findhidden\\\/q_64.png\",\"findhidden\\\/l_64.png\",\"findhidden\\\/t_64.png\",\"findhidden\\\/h_64.png\",\"findhidden\\\/v_64.png\",\"findhidden\\\/r_64.png\",\"findhidden\\\/k_64.png\",\"findhidden\\\/m_64.png\",\"findhidden\\\/c_64.png\",\"findhidden\\\/z_64.png\",\"findhidden\\\/s_64.png\",\"findhidden\\\/w_64.png\",\"findhidden\\\/d_64.png\",\"findhidden\\\/i_64.png\",\"findhidden\\\/e_64.png\"]"} 

更多的logcat

07-03 19:16:37.320: W/System.err(8863):  at org.json.JSON.typeMismatch(JSON.java:96) 
+0

我將能夠在12小時後回覆...現在離線...謝謝 –

+1

而你的問題是...? – haylem

+0

如何將字符串轉換爲JsonArray? –

回答

2

從temp2的日誌輸出中,arr的json類型是String。所以如果你試圖從中獲取JSONArray,你會得到typeMismatch。

看看下面的代碼是否適合你。 JSONObject的構造函數可以採用包含對象的JSON編碼的字符串。所以我們用它來創建temp2。

Log.d("defaultArrayShuffled", defaultArray.toString()); 

String temp = defaultArray.toString(); 
String temp1= temp.replaceAll("_white_", "_"); 
Log.d("temp1", temp1); 

JSONObject temp2 = new JSONObject("{ \"arr\" : " + temp1 + "}"); 
//temp2.put("arr", temp1); 
Log.d("temp2", temp2.toString()); 
replacingArray = temp2.getJSONArray("arr"); 

希望它有幫助。

+0

完美...只是取代了代碼,它的工作原理:O非常感謝:) –

0

的幾點思考 -答:我發現傑克遜是一個更好的Json圖書館。考慮使用它。它提供了更好的錯誤信息
B.我寫了下面的代碼,類似於你沒有使用什麼樣的紅外我們確實在www.ovirt.org對JSON序列化和反序列化:

String[] arr = { "aaa_white_.png", "bbb_white_.png", "ccc_white_.png", "ddd.png" }; 
     JsonObjectSerializer serialezer = new JsonObjectSerializer(); 
     String payload = serialezer.serialize(arr); 
     String newPayload = payload.replaceAll("_white_", "_"); 
     JsonObjectDeserializer der = new JsonObjectDeserializer(); 
     String[] res = (String[]) der.deserialize(newPayload, String[].class); 
     System.out.println(payload); 
     System.out.println(res); 
     for (String str : res) { 
      System.out.println(str); 
     } 

您可以克隆的git我們的代碼,你應該看看ovirt-engine/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/serialization/json 看看我們在那裏做了什麼。