如何从此格式转换从服务器返回的数据
[{"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();
答案 0 :(得分:1)
返回的JSON文件不完整,它缺少最后的方括号以关闭数组。
如果此JSON离开,则在末尾手动添加关闭方括号
// your code
result =sb.toString();
if(!result.endsWith("]")) {
result = result + "]";
}
// continue the rest of the cod
您也可以使用此代码检查它是否是有效的JSON check if file is json, java
我希望这会有所帮助
答案 1 :(得分:0)
我假设行尾有]
从服务器返回的数据是带有1个JsonObject的JSON数组。
您可以使用以下方法解析它:
JSONArray jArray = new JSONArray(result);
String foodName = jArray.getJSONObject(0).getString("Food");
等等..