Java 解析JSON以使用Asynctask获取所有详细信息 { “响应代码”:200, “借方”:3, “位置”:“列车已到达目的地,晚点5分钟”, “火车”:{ “编号”:“12046”, “名称”:“CDG NDLS SHTBDI” }, “路线”:[ { “否”:1, “天”:0, “车站”:{ “姓名”:“昌迪加尔”, “代码”:“CDG” }, “has_到达”:false, “你已经离开了”:是的, “距离”:0, “scharr”:“来源”, “schdep”:“12:00”, “actarr”:“00:00”, “actdep”:“12:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { "否":二,, “天”:0, “车站”:{ “名称”:“AMBALA CANT JN”, “代码”:“UMB” }, “已经到了”:是的, “你已经离开了”:是的, “距离”:67, “沙尔”:“12:40”, “schdep”:“12:42”, “actarr”:“12:40”, 《行动纲领》:“12:42”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { “否”:3, “天”:0, “车站”:{ “名称”:“新德里”, “代码”:“NDLS” }, “已经到了”:是的, “已经离开”:错, “距离”:265, “沙尔”:“15:25”, “schdep”:“目的地”, “actarr”:“15:30”, “actdep”:“00:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:5 } ] } 公务舱列车状态{ 公共静态响应代码; 私有int序列号; 私有字符串调度; 私有字符串; 公共静态串站; 公共债务; 到达的私有字符串状态; 二等兵来了,; 私家侦探已经离去; 拉特明私人酒店; 私有字符串实际值; 私有字符串scheduleArrivalDate; 公共静态字符串位置; 公共字符串名称; 公共字符串getName() { 返回getName(); } 公共void集合名(字符串名) { this.name=name; } 公共布尔值isHasArrived() { 返回已经到达; } 公共void setHasArrived(布尔值hasArrived) { this.hasarigned=hasarigned; } 公共布尔值() { 返回已离开; } public void sethaseended(布尔haseended) { this.hasedecented=hasedecented; } public int getLatemin() { 返回latemin; } 公共void setLatemin(int latemin) { this.latemin=latemin; } 公共无效设置序列号(内部序列号) { this.serialNo=serialNo; } 公共字符串getScheduleArrival() { 返回预定到达时间; } public void setScheduleArrival(字符串scheduleArrival) { this.scheduleArrival=scheduleArrival; } 公共字符串getActualRival() { 返回实际竞争对手; } public void setActualRival(字符串ActualRival) { this.actualarival=actualarival; } 公共字符串getStation() { 返回站; } 公共空间站(字符串站) { 这个站=站; } 公共字符串getStatusOfArrival() { 返回到达状态; } public void setStatusOfArrival(字符串状态OfArrival) { this.statusOfArrival=到达状态; } 公共字符串getActualArrivalDate() { 返回实际利率; } public void setActualArrivalDate(字符串actualArrivalDate) { this.actualArrivalDate=actualArrivalDate; } 公共字符串getScheduleArrivalDate() { 返回计划到达日期; } 公共无效setScheduleArrivalDate(字符串scheduleArrivalDate) { this.scheduleArrivalDate=scheduleArrivalDate; } } 公共类TrainStatusParser{ 公共静态列表源(字符串内容){ 尝试 { JSONObject JSONObject=新的JSONObject(内容); List trainList=new ArrayList(); TrainStatus.responseCode=jsonObject.getInt(“响应代码”); TrainStatus.position=jsonObject.getString(“位置”); TrainStatus.debit=jsonObject.getInt(“debit”); JSONArray route=jsonObject.getJSONArray(“route”); 对于(inti=0;i

Java 解析JSON以使用Asynctask获取所有详细信息 { “响应代码”:200, “借方”:3, “位置”:“列车已到达目的地,晚点5分钟”, “火车”:{ “编号”:“12046”, “名称”:“CDG NDLS SHTBDI” }, “路线”:[ { “否”:1, “天”:0, “车站”:{ “姓名”:“昌迪加尔”, “代码”:“CDG” }, “has_到达”:false, “你已经离开了”:是的, “距离”:0, “scharr”:“来源”, “schdep”:“12:00”, “actarr”:“00:00”, “actdep”:“12:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { "否":二,, “天”:0, “车站”:{ “名称”:“AMBALA CANT JN”, “代码”:“UMB” }, “已经到了”:是的, “你已经离开了”:是的, “距离”:67, “沙尔”:“12:40”, “schdep”:“12:42”, “actarr”:“12:40”, 《行动纲领》:“12:42”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:0 }, { “否”:3, “天”:0, “车站”:{ “名称”:“新德里”, “代码”:“NDLS” }, “已经到了”:是的, “已经离开”:错, “距离”:265, “沙尔”:“15:25”, “schdep”:“目的地”, “actarr”:“15:30”, “actdep”:“00:00”, “scharr_日期”:“2015年11月19日”, “生效日期”:“2015年11月19日”, “latemin”:5 } ] } 公务舱列车状态{ 公共静态响应代码; 私有int序列号; 私有字符串调度; 私有字符串; 公共静态串站; 公共债务; 到达的私有字符串状态; 二等兵来了,; 私家侦探已经离去; 拉特明私人酒店; 私有字符串实际值; 私有字符串scheduleArrivalDate; 公共静态字符串位置; 公共字符串名称; 公共字符串getName() { 返回getName(); } 公共void集合名(字符串名) { this.name=name; } 公共布尔值isHasArrived() { 返回已经到达; } 公共void setHasArrived(布尔值hasArrived) { this.hasarigned=hasarigned; } 公共布尔值() { 返回已离开; } public void sethaseended(布尔haseended) { this.hasedecented=hasedecented; } public int getLatemin() { 返回latemin; } 公共void setLatemin(int latemin) { this.latemin=latemin; } 公共无效设置序列号(内部序列号) { this.serialNo=serialNo; } 公共字符串getScheduleArrival() { 返回预定到达时间; } public void setScheduleArrival(字符串scheduleArrival) { this.scheduleArrival=scheduleArrival; } 公共字符串getActualRival() { 返回实际竞争对手; } public void setActualRival(字符串ActualRival) { this.actualarival=actualarival; } 公共字符串getStation() { 返回站; } 公共空间站(字符串站) { 这个站=站; } 公共字符串getStatusOfArrival() { 返回到达状态; } public void setStatusOfArrival(字符串状态OfArrival) { this.statusOfArrival=到达状态; } 公共字符串getActualArrivalDate() { 返回实际利率; } public void setActualArrivalDate(字符串actualArrivalDate) { this.actualArrivalDate=actualArrivalDate; } 公共字符串getScheduleArrivalDate() { 返回计划到达日期; } 公共无效setScheduleArrivalDate(字符串scheduleArrivalDate) { this.scheduleArrivalDate=scheduleArrivalDate; } } 公共类TrainStatusParser{ 公共静态列表源(字符串内容){ 尝试 { JSONObject JSONObject=新的JSONObject(内容); List trainList=new ArrayList(); TrainStatus.responseCode=jsonObject.getInt(“响应代码”); TrainStatus.position=jsonObject.getString(“位置”); TrainStatus.debit=jsonObject.getInt(“debit”); JSONArray route=jsonObject.getJSONArray(“route”); 对于(inti=0;i,java,android,arrays,json,Java,Android,Arrays,Json,请尝试以下代码 { "response_code": 200, "debit": 3, "position": "Train has reached Destination and late by 5 minutes", "train": { "number": "12046", "name": "CDG NDLS SHTBDI" }, "route": [ { "no": 1, "day": 0,

请尝试以下代码

{

  "response_code": 200,

  "debit": 3,


  "position": "Train has reached Destination and late by 5 minutes",

  "train": {

    "number": "12046",
    "name": "CDG NDLS SHTBDI"
  },

  "route": [
            {

"no": 1,

      "day": 0,

      "station": {
        "name": "CHANDIGARH",
        "code": "CDG"
      },
      "has_arrived": false,
      "has_departed": true,
      "distance": 0,
      "scharr": "Source",
      "schdep": "12:00",
      "actarr": "00:00",
      "actdep": "12:00",
      "scharr_date": "19 Nov 2015",
      "actarr_date": "19 Nov 2015",
      "latemin": 0
    },
    {
      "no": 2,
      "day": 0,
      "station": {
        "name": "AMBALA CANT JN",
        "code": "UMB"
      },
      "has_arrived": true,
      "has_departed": true,
      "distance": 67,
      "scharr": "12:40",
      "schdep": "12:42",
      "actarr": "12:40",
      "actdep": "12:42",
      "scharr_date": "19 Nov 2015",
      "actarr_date": "19 Nov 2015",
      "latemin": 0
    },
    {
      "no": 3,
      "day": 0,
      "station": {
        "name": "NEW DELHI",
        "code": "NDLS"
      },
      "has_arrived": true,
      "has_departed": false,
      "distance": 265,
      "scharr": "15:25",
      "schdep": "Destination",
      "actarr": "15:30",
      "actdep": "00:00",
      "scharr_date": "19 Nov 2015",
      "actarr_date": "19 Nov 2015",
      "latemin": 5
    }
  ]
}


public class TrainStatus {

    public static int responseCode;
    private int serialNo;
    private String scheduleArrival;
    private String actualArrival;
    public static String station;
    public static int debit;
    private String statusOfArrival;
    private boolean hasArrived;
    private boolean hasDeparted;
    private int latemin;
    private String actualArrivalDate;
    private String scheduleArrivalDate;
    public static String position;
    public  String name;

        public String getName()
            {
                return getName();
            }
        public void setName(String name)
            {
                this.name=name;
            }

        public boolean isHasArrived()
            {
                return hasArrived;
            }

        public void setHasArrived(boolean hasArrived)
            {
                this.hasArrived = hasArrived;
            }

        public boolean isHasDeparted()
            {
                return hasDeparted;
            }

        public void setHasDeparted(boolean hasDeparted)
            {
            this.hasDeparted = hasDeparted;
            }

        public int getLatemin()
        {
        return latemin;
        }

        public void setLatemin(int latemin) 
        {
        this.latemin = latemin;
        }

        public void setSerialNo(int serialNo)
        {
        this.serialNo = serialNo;
        }

        public String getScheduleArrival()
        {
        return scheduleArrival;
        }

        public void setScheduleArrival(String scheduleArrival) 
        {
        this.scheduleArrival = scheduleArrival;
        }

        public String getActualArrival()
        {
        return actualArrival;
        }

        public void setActualArrival(String actualArrival)
        {
        this.actualArrival = actualArrival;
        }

        public String getStation() 
        {

            return station;
        }        

        public void setStation(String station)
        {

            this.station = station;
        }

    public String getStatusOfArrival() 
        {
            return statusOfArrival;
        }

    public void setStatusOfArrival(String statusOfArrival)  
        {
            this.statusOfArrival = statusOfArrival;
        }

    public String getActualArrivalDate() 
        {
            return actualArrivalDate;
        }

    public void setActualArrivalDate(String actualArrivalDate) 
        {
            this.actualArrivalDate = actualArrivalDate;
        }

   public String getScheduleArrivalDate() 

        {

 return scheduleArrivalDate;

}

    public void setScheduleArrivalDate(String scheduleArrivalDate) 
       {
          this.scheduleArrivalDate = scheduleArrivalDate;
       }
}



public class TrainStatusParser {

    public static List<TrainStatus> parseFeed(String content){
        try
        {
            JSONObject jsonObject = new JSONObject(content);
            List<TrainStatus> trainList = new ArrayList<>();
            TrainStatus.responseCode = jsonObject.getInt("response_code");
            TrainStatus.position = jsonObject.getString("position");
            TrainStatus.debit=jsonObject.getInt("debit");
            JSONArray route = jsonObject.getJSONArray("route");
             for(int i=0;i<route.length();i++)
             {
                JSONObject routeObject = route.getJSONObject(i);
                TrainStatus trainStatus = new TrainStatus();
                if (jsonObject.has("station"))
                {
                       JSONObject addressObject = jsonObject.getJSONObject("station");
                       trainStatus.name=addressObject.getString("name");
                }
                trainStatus.setSerialNo(routeObject.getInt("no"));
                trainStatus.setScheduleArrival(routeObject.getString("scharr"));
                trainStatus.setActualArrival(routeObject.getString("actarr"));
                trainStatus.setStatusOfArrival(routeObject.getString("status"));
                trainStatus.setHasArrived(routeObject.getBoolean("has_arrived"));
                trainStatus.setHasDeparted(routeObject.getBoolean("has_departed"));
                trainStatus.setLatemin(routeObject.getInt("latemin"));
                trainStatus.setActualArrivalDate(routeObject.getString("actarr_date"));
                trainStatus.setScheduleArrivalDate(routeObject.getString("scharr_date"));
                trainList.add(trainStatus);
            }
            return trainList;

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

对于(int i=0;i在您发布的代码中使用来自Google call的库来解析每条
路线,您有:

 for(int i=0;i<route.length();i++) {
            JSONObject routeObject = route.getJSONObject(i);
            TrainStatus trainStatus = new TrainStatus();

            JSONObject jsonObject_station = routeObject.getJSONObject("station");

            String stationname = jsonObject_station.getString("name");
            String code = jsonObject_station.getString("code");
            Log.d("checkvalue", "   " + stationname + "    " + code);

            trainStatus.setSerialNo(routeObject.getInt("no"));
            trainStatus.setScheduleArrival(routeObject.getString("scharr"));
            trainStatus.setActualArrival(routeObject.getString("actarr"));
            trainStatus.setStatusOfArrival(routeObject.getString("status"));
            trainStatus.setHasArrived(routeObject.getBoolean("has_arrived"));
            trainStatus.setHasDeparted(routeObject.getBoolean("has_departed"));
            trainStatus.setLatemin(routeObject.getInt("latemin"));
            trainStatus.setActualArrivalDate(routeObject.getString("actarr_date"));
            trainStatus.setScheduleArrivalDate(routeObject.getString("scharr_date"));
            trainList.add(trainStatus);
        }

这里似乎是输入错误导致了您的问题。您正在调用
jsonObject.has(“station”)
,而您应该调用
routeObject.has(“station”)
。类似地,在
if
语句中,您应该将
jsonObject.getJSONObject(“station”)更改为
routeObject.getJSONObject(“station”)

Json解析似乎没问题。但您是指
TrainStatus.name=…
还是
TrainStatus.setName(…)
?还是正确?是否有错误消息?如果没有,从分析中检索到的值是什么?TrainStatus是一个类,其中定义了名称,但没有错误消息,但通过更改If(jsonObject)站点名称为空为了简化这两条线路,我将从以下位置获取JSONObject:u station=routeObject.getJSONObject(“车站”);TrainStatus.station=from\u station.getString(“名称”);每个列表中都有相同的站名,您必须基于
routeObject
进行解析,我希望这会有所帮助you@SangamNayak它应该仔细检查,,,没问题,把你的代码怎么解析出来Stationname@SangamNayak陈怡
            JSONObject routeObject = route.getJSONObject(i);
            TrainStatus trainStatus = new TrainStatus();
            if (jsonObject.has("station"))
            {
                   JSONObject addressObject = jsonObject.getJSONObject("station");
                   trainStatus.name=addressObject.getString("name");
            }