0

サーバーから返されたデータをこの形式から変換する方法

[{"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();
4

2 に答える 2

1

返されたJSONファイルは完全ではなく、配列を閉じるための最後に角かっこがありません。

このJSONが戻ってきた場合は、最後に閉じ角かっこを手動で追加します

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

また、このコードを使用して 、ファイルがjson、javaであるかどうかを有効なJSONチェックであるかどうかを確認できます。

これがお役に立てば幸いです

于 2012-05-07T20:13:18.263 に答える
0

]行の終わりにあると仮定します。サーバーから返されるデータは、1つのJsonObjectを持つJSON配列です。あなたはそれを解析することができます:

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

等々..

于 2012-05-07T20:13:58.640 に答える