使用android读取web服务时出错
我试图从web服务中读取一些JSON数据,并将其显示在Toast中。 这是我试图读取的JSON数组:使用android读取web服务时出错,android,json,Android,Json,我试图从web服务中读取一些JSON数据,并将其显示在Toast中。 这是我试图读取的JSON数组: {"ProximoPartido":[{"rival":"Nacional","cancha":"Stockolmo","hora":"21.15","fecha":"Viernes 30","estado":"Pendiente"}]} 这是我写的代码: private class ReadJSONFeedTask extends AsyncTask <String,
{"ProximoPartido":[{"rival":"Nacional","cancha":"Stockolmo","hora":"21.15","fecha":"Viernes 30","estado":"Pendiente"}]}
这是我写的代码:
private class ReadJSONFeedTask extends AsyncTask
<String, Void, String> {
protected String doInBackground(String... urls) {
return readJSONFeed(urls[0]);
}
protected void onPostExecute(String result) {
try {
JSONObject jsonObject = new JSONObject(result);
JSONObject ProximosPartidos =
new JSONObject(jsonObject.getString("ProximoPartido"));
Toast.makeText(getBaseContext(),
ProximosPartidos.getString("rival") +
" - " + ProximosPartidos.getString("fecha"),
Toast.LENGTH_SHORT).show();
} catch (Exception e) {
Log.d("ReadJSONFeedTask", e.getLocalizedMessage());
}
}
}
私有类ReadJSONFeedTask扩展了异步任务
{
受保护的字符串doInBackground(字符串…URL){
返回readJSONFeed(URL[0]);
}
受保护的void onPostExecute(字符串结果){
试一试{
JSONObject JSONObject=新JSONObject(结果);
JSONObject ProximosPartidos=
新的JSONObject(JSONObject.getString(“ProximoPartido”);
Toast.makeText(getBaseContext(),
ProximosPartidos.getString(“对手”)+
“-”+ProximosPartidos.getString(“fecha”),
吐司。长度(短)。show();
}捕获(例外e){
d(“ReadJSONFeedTask”,例如getLocalizedMessage());
}
}
}
这就是我得到的错误:
org.json.JSONArray类型的值[{“hora”:“21.15”,“estado”:“Pendiente”,“fecha”:“Viernes 30”,“rival”:“National”,“cancha”:“Stockolmo”}]不能转换为JSONObject
知道我做错了什么吗?
谢谢 变化
JSONObject jsonObject = new JSONObject(result);
JSONObject ProximosPartidos = new JSONObject(jsonObject.getString("ProximoPartido"));
Toast.makeText(getBaseContext(),ProximosPartidos.getString("rival") +
" - " + ProximosPartidos.getString("fecha"),Toast.LENGTH_SHORT).show();
到
作为结果的值是JsonArray
而不是JSONObject
编辑
用于检查Json中是否存在密钥。如果此对象具有名称映射,则返回true
if (ProximosPartidos.has("rival") && ProximosPartidos.has("fecha")) {
Toast.makeText(getBaseContext(),ProximosPartidos.getString("rival") +
" - " + ProximosPartidos.getString("fecha"),Toast.LENGTH_SHORT).show();
}
您的JSONObject实际上是一个JSONArray,因为它以“[]开头`` 只需像这样解析它:
JSONObject jsonObject = new JSONObject(result);
JSONObject ProximosPartidos =
new JSONObject(jsonObject.getJSONArray("ProximoPartido").getJSONObject(0));
然后剩下的就行了谢谢你的回复!我替换了那段代码,现在我得到了这个错误:{“ProximoPartido”:[{“rival”:“Nacional”,“cancha”:“Stockolmo”,“hora”:“21.15”,“fecha”:“Viernes 30”,“estado”:“Pendiente”}]}@Bruno很乐意帮忙,如果这个答案对你有帮助,那么别忘了接受它。好的,我做到了:顺便问一下:你知道这个新错误是什么意思吗?谢谢@布鲁诺,请详细解释一下,我把我的代码换成了你刚刚发布的代码,现在我得到了一个错误:“{”ProximoPartido:[{”rival:“Nacional”,“cancha:“Stockolmo”,“hora:“21.15”,“fech:”没有值a:“维也纳30号”,“埃斯塔多”:“彭迪恩”}]}”。我不知道这个错误是什么意思。还有,这里的零是什么意思:=data.getJSONObject(0)?
JSONObject jsonObject = new JSONObject(result);
JSONObject ProximosPartidos =
new JSONObject(jsonObject.getJSONArray("ProximoPartido").getJSONObject(0));