2012-05-07 33 views
0

我怎樣才能從這種格式串不能轉換成JSON數組

[{"Food":"orange","Protein":"52","Water":"52","Magnesium":"12","Phosphorus":"12","Sodium":"12.5","Zinc":"45","Vit_C":"12","Fat_Sat":"12","Fat_Mono":"45","Vit_B12":"45","Calcium":"45","Calories":"4565","Fiber":"12","Cholesterole":"12","Potassium":"12","Sugar_Tot":"55","Iron":"45","Folic_Acid":"55","carbohydrates":"55","Vit_K":"5","Serving_Size":"\u062d\u0628\u0629"}] 

從服務器返回的數據轉換成該

"[{\"Food\":\"\\u062a\\u0641\\u0627\\u062d \\u0628\\u062f\\u0648\\u0646 \\u0627\\u0644\\u0642\\u0634\\u0631\\u0629\",\"Protein\":\"0.27\",\"Water\":\"86.67\",\"Magnesium\":\"4\",\"Phosphorus\":\"11\",\"Sodium\":\"0\",\"Zinc\":\"0.05\",\"Vit_C\":\"4\",\"Fat_Sat\":\"0\",\"Fat_Mono\":\"0\",\"Vit_B12\":\"0\",\"Calcium\":\"5\",\"Calories\":\"48\",\"Fiber\":\"1\",\"Cholesterole\":\"0\",\"Potassium\":\"90\",\"Sugar_Tot\":\"10.1\",\"Iron\":\"0.07\",\"Folic_Acid\":\"0\",\"carbohydrates\":\"13\",\"Vit_K\":\"0.6\"}]"; 

因爲在仿真器2.2的第一格式的原因異常(parssingorg。 json.JSONException:java.lang.String類型的值不能轉化爲JSONArray),其中

this is part of my code : 

try{ 
        BufferedReader reader = new BufferedReader(new InputStreamReader(
          is, "utf-8"), 8); 
        sb = new StringBuilder(); 

        String line = "0"; 
        while ((line = reader.readLine()) != null) { 
         sb.append(line);} 

        is.close(); 

        result =sb.toString(); 
        // result = result.replace('\"', '\'').trim(); 
        Log.d("",result); 
        } 
        catch(Exception e){ 
         Log.e("log_tag", "error" + e.toString());  
         } 

         Log.d("",result); 
        try{ 
               jArray = new JSONArray(result); 
         JSONObject json_data = null; 

         for (int i = 0; i < jArray.length(); i++) { 
         json_data = jArray.getJSONObject(i); 
         if(json_data!=null) 
          { 
          foodName=json_data.getString("Food"); 
          Description=json_data.getInt("Calories");    
          item.setName(foodName); 
          item.setDescription(10); 
          item.setSelected(false); 
          MealActivity.foodList.add(item); 
          item=new ItemInList(); 

回答

1

返回Ĵ SON文件不完整,它末端的方括號缺少以關閉數組。

如果JSON贈品的回報,然後手動末

// your code 
result =sb.toString(); 
if(!result.endsWith("]")) { 
    result = result + "]"; 
} 
// continue the rest of the cod 

還添加了密切的方括號您可以使用此代碼來檢查它是否是一個有效的JSON check if file is json, java

我希望這有助於

+0

方括號中,無意中漏報 – user2012

0

我認爲在行尾有一個] 從服務器返回的數據是一個帶有1個JsonObject的JSON數組。 你可以用它解析:

JSONArray jArray = new JSONArray(result); 
String foodName = jArray.getJSONObject(0).getString("Food"); 

等等..

+0

謝謝..但我認爲這個問題是在字符串的格式。 – user2012