Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在android中解析JSON对象数组_Java_Android_Json_Api - Fatal编程技术网

Java 在android中解析JSON对象数组

Java 在android中解析JSON对象数组,java,android,json,api,Java,Android,Json,Api,我想从这个api调用中获取lineId、destinationName和timeToStation 有人能帮我举个例子吗? [ { “$type”:“Tfl.Api.Presentation.Entities.Prediction,Tfl.Api.Presentation.Entities”, “id”:“-480785385”, “操作类型”:1, “车辆ID”:“BJ11DSX”, “naptanId”:“49009219W”, “车站名称”:“小伊尔福德巷”, “lineId”:“25”,

我想从这个api调用中获取lineId、destinationName和timeToStation 有人能帮我举个例子吗?

[
{
“$type”:“Tfl.Api.Presentation.Entities.Prediction,Tfl.Api.Presentation.Entities”,
“id”:“-480785385”,
“操作类型”:1,
“车辆ID”:“BJ11DSX”,
“naptanId”:“49009219W”,
“车站名称”:“小伊尔福德巷”,
“lineId”:“25”,
“lineName”:“25”,
“平台名称”:“B”,
“方向”:“入站”,
“轴承”:“245”,
“destinationNaptanId”:“,
“destinationName”:“牛津马戏团”,
“时间戳”:“2016-04-17T16:56:56.463Z”,
“timeToStation”:1534,
“当前位置”:“,
“朝向”:“东哈姆或庄园公园”,
“预期到达”:“2016-04-17T17:22:31Z”,
“时间生活”:“2016-04-17T17:23:01Z”,
“modeName”:“总线”
},
{
“$type”:“Tfl.Api.Presentation.Entities.Prediction,Tfl.Api.Presentation.Entities”,
“id”:“1992301652”,
“操作类型”:1,
“车辆ID”:“BJ11DVA”,
“naptanId”:“49009219W”,
“车站名称”:“小伊尔福德巷”,
“lineId”:“25”,
“lineName”:“25”,
“平台名称”:“B”,
“方向”:“入站”,
“轴承”:“245”,
“destinationNaptanId”:“,
“destinationName”:“牛津马戏团”,
“时间戳”:“2016-04-17T16:56:56.463Z”,
“timeToStation”:1159,
“当前位置”:“,
“朝向”:“东哈姆或庄园公园”,
“预期到达”:“2016-04-17T17:16:16Z”,
“时间生活”:“2016-04-17T17:16:46Z”,
“modeName”:“总线”
},
{
“$type”:“Tfl.Api.Presentation.Entities.Prediction,Tfl.Api.Presentation.Entities”,
“id”:“733078946”,
“操作类型”:1,
“车辆ID”:“BJ11DVG”,
“naptanId”:“49009219W”,
“车站名称”:“小伊尔福德巷”,
“lineId”:“25”,
“lineName”:“25”,
“平台名称”:“B”,
“方向”:“入站”,
“轴承”:“245”,
“destinationNaptanId”:“,
“destinationName”:“牛津马戏团”,
“时间戳”:“2016-04-17T16:56:56.463Z”,
“timeToStation”:790,
“当前位置”:“,
“朝向”:“东哈姆或庄园公园”,
“预期到达”:“2016-04-17T17:10:07Z”,
“时间生活”:“2016-04-17T17:10:37Z”,
“modeName”:“总线”
}
]

我的任务被打嗝了

   @Override
    protected JSONObject doInBackground(String... args){
       JSONParser jsonParser = new JSONParser();

        Log.i("URL", url);
        JSONObject json = jsonParser.getJSONFromUrl(url);
        if(json == null) {
            Log.i("Json obj =" , "NULL");
        }
        else{
            return json;
        }
        return new JSONObject();
    }

    @Override
    protected void onPostExecute(JSONObject json){
        progressDialog.dismiss();
        //String shopName ="";
       // String distance="";

        try{
            //Fetching JSON Array
            Log.i("JSON", json.toString());

            jsonData = new JSONArray(json);

            Double arrivalTime= 0.0;

            for(int i=0;i<json.length();i++) {

                try {
                    JSONObject c = json.getJSONObject(i);

                    busNoArray.add(json.getString(TAG_LINEID));
                    destinationArray.add(json.getString(TAG_DESTINATION));

                    arrivalTime = json.getDouble(TAG_TIME) / 60;
                    arrivalTimeArray.add(arrivalTime);

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

            adapter = new BusTimeAdapter(BusTimeActivity.this,busNoArray, destinationArray, arrivalTimeArray);
            mListView.setAdapter(adapter);`
@覆盖
受保护的JSONObject doInBackground(字符串…args){
JSONParser JSONParser=新的JSONParser();
Log.i(“URL”,URL);
JSONObject json=jsonParser.getJSONFromUrl(url);
if(json==null){
Log.i(“Json obj=”,“NULL”);
}
否则{
返回json;
}
返回新的JSONObject();
}
@凌驾
受保护的void onPostExecute(JSONObject json){
progressDialog.disclose();
//字符串shopName=“”;
//字符串距离=”;
试一试{
//获取JSON数组
Log.i(“JSON”,JSON.toString());
jsonData=新的JSONArray(json);
双到达时间=0.0;

对于(inti=0;i,首先确保已检索到JSON字符串

然后您可以轻松访问它们内部的属性,如

try {
     JSONArray jsonArray = new JSONArray(json);
     JSONObject obj = jsonArray.getJSONObject(0); //0 for just retrieving first object you can loop it
     String myVehicleID = obj.getString("vehicleId"); //To retrieve vehicleId
     //Similarly do it for others as well
    } catch (JSONException e) {
      e.printStackTrace();
    }

您确定这是您的json
Log.i(“json”,json.toString())吗
logged?您做的一切都错了。这只是为了确保它不是空响应。我不了解的是,当我的doInBackground返回一个对象时,如何访问数组中的对象,我不确定如何访问数组中的值。我添加了它作为答案,我使用0仅检索第一个对象,但您也可以循环它来检索其他。并添加了一些注释来澄清这些。希望对您有所帮助。请随意询问您是否有一些困惑。
JSONArray=new-JSONArray(json);
说调用需要API级别19。我的最小API是9,所以我将您的代码修改为
JSONArray=new-JSONArray(json.toString())
但它给了我一个运行时错误
E/JSON解析器:解析dataorg.JSON.JSONException时出错:
有什么想法吗?是的,你需要在
new JSONArray()
中作为参数传递字符串。这意味着你没有得到有效的JSON。请记录你的
JSON.toString()
并粘贴输出。