在第三个log.d(“Lee”,“working”)之后显示错误org.json.JSONException和org.json.typemismatch以及org.json.getJSONObject。
这是将json数据转换为适用于android的正确格式列表视图的代码。
public class FlowerJSONParser {
public static List<Flower> parserFeed(String content)
{
try
{
Log.d("Lee", "working");
JSONArray ar = new JSONArray(content);
Log.d("Lee", "working");
List<Flower> flowerList = new ArrayList<>();
for(int i=0; i< ar.length(); i++)
{
Log.d("Lee", "working");
JSONObject obj = ar.getJSONObject(i);
Log.d("Lee", "working");
Flower flower = new Flower();
Log.d("Lee", "working");
flower.setId(obj.getString("id"));
flower.setNotes(obj.getString("notes"));
flowerList.add(flower);
}
return flowerList;
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
}
答案 0 :(得分:0)
你正试图从JSONArray“ar”获取JSONObject。因此,您必须确保数组中的所有元素都是JSONObject。如果没有,则在将元素转换为JSONObject期间必定存在异常。
请注意,JSONArray中的元素可以是任何主要类型(int / long / boolean ...),包装类(Integer / Long / Boolean ...),String,JSONObject甚至是另一个JSONArray。 因此,您必须在ar.getJSONObject(i)之前确认元素的类型。
另一种用法是: 用ar.optJSONObject(i)替换ar.getJSONObject(i)。 这样,如果元素不是JSONObject,则会得到null而不是异常。