Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.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应用程序是否将内部数组返回为[]或ArrayList内存分配?_Java_Android_Arrays_Parsing_Jsonobject - Fatal编程技术网

Java Android应用程序是否将内部数组返回为[]或ArrayList内存分配?

Java Android应用程序是否将内部数组返回为[]或ArrayList内存分配?,java,android,arrays,parsing,jsonobject,Java,Android,Arrays,Parsing,Jsonobject,您好,我是Java和android新手,我正在尝试解析链接类中的数据,但我不知道如何从一些内部/嵌套的JSONArray中检索JSONObject 我可以从外部JSONArray中检索对象,但看不到如何从StorlineData类中的段内部JSONArray中检索嵌套的JSONArray列表对象 当我尝试解析来自内部/嵌套JSONArray的数据时,响应如下所示: 提前感谢你的帮助 JSON(我无法从trackPointsData和PlacesData获取数据) 主要活动: ... p

您好,我是Java和android新手,我正在尝试解析链接类中的数据,但我不知道如何从一些内部/嵌套的JSONArray中检索JSONObject

我可以从外部JSONArray中检索对象,但看不到如何从StorlineData类中的
内部JSONArray中检索嵌套的JSONArray列表对象

当我尝试解析来自内部/嵌套JSONArray的数据时,响应如下所示:

提前感谢你的帮助

JSON(我无法从trackPointsData和PlacesData获取数据)

主要活动:

...
    private MovesHandler<ArrayList<StorylineData>> storylineHandler = new MovesHandler<ArrayList<StorylineData>>() {
                @Override
                public void onSuccess(ArrayList<StorylineData> result) {
                    toggleProgress(false);
                    updateResponse(
...
                                + "-----------Segment 1-------\t"
                                + "StartTime:\t" + result.get(0).getSegments().get(0).getStartTime() + "\n"
                                + "             -Activities Array-\t" + "\n"
                                + "- StartTime:\t" +

 ...

                        + "-----------Segment 2-------\t" + "\n"
                        + "- TrackPoints :\t" + result.get(0).getTrackPoints()+ "\n"//====Array Add
                        + "- FoursquareId:\t" + result.get(0).getFoursquareId() + "\n"
                        + "- ACt:\t" + result.get(0).getActivities()+ "\n"
                            + "- Foursquare Id:\t" + result.get(0).getSegments().get(0).getPlace().getFoursquareId() + "\n"
                            + "- Foursquare Id:\t" + result.get(0).getFoursquareId() + "\n"
                            + "- Foursquare Category Ids:\t" + result.get(0).getSegments().get(0).getPlace().getFoursquareCategoryIds()+ "\n"
                            + "- Activities:\t" + result.get(0).getSegments().get(0).getActivities()+ "\n"
);

        }
TrackPointData类:

/**
 * Parse a {@link org.json.JSONObject} from storyline {@link org.json.JSONArray}, then return the corresponding {@link StorylineData} object.
 *
 * @param jsonObject : the storyline JSON object received from server
 * @return corresponding {@link StorylineData}
 */
public static StorylineData parse(JSONObject jsonObject) throws JSONException {
    if (jsonObject != null) {

        StorylineData storylineData = new StorylineData();

        storylineData.date = jsonObject.optString("date");
        storylineData.caloriesIdle = jsonObject.optInt("caloriesIdle");
        storylineData.lastUpdate = jsonObject.optString("lastUpdate");
        storylineData.summary = new ArrayList<>();
        storylineData.segments = new ArrayList<>();

        JSONArray summariesJsonArray = jsonObject.optJSONArray("summary");

        if (summariesJsonArray != null)
        for (int i = 0; i < summariesJsonArray.length(); i++) {

            JSONObject summaryJsonObject = summariesJsonArray.optJSONObject(i);

                    if (summaryJsonObject != null) {
                    summariesJsonArray.getJSONObject(i).getString("distance");

                        String group = summaryJsonObject.optString("group");

                        Integer distance = summaryJsonObject.optInt("distance");
                        storylineData.setDistance(distance);
...
                    storylineData.summary.add(SummaryData.parse(summaryJsonObject));

                        Log.d("StorylineDataCls \t sJo", summaryJsonObject.toString() + "Log\n");
                        System.out.println("print distance" + summariesJsonArray.getJSONObject(i).getString("distance"));       
                        System.out.println("print summary" + summaryJsonObject);

                }
            }

        JSONArray segmentsJsonArray = jsonObject.optJSONArray("segments");
        if (segmentsJsonArray != null) {

            for (int i = 0; i < segmentsJsonArray.length(); i++) {
                JSONObject segment = segmentsJsonArray.optJSONObject(i);

                if (segment != null) {

                    JSONArray activitiesJsonArray = segment.optJSONArray("activities");
                    if (activitiesJsonArray!=null) {

                        for (int j = 0; j < activitiesJsonArray.length(); j++) {
                            JSONObject trackPoints = activitiesJsonArray.optJSONObject(j);
                            if(trackPoints != null){
                        ...
                    storylineData.trackPoints.add(TrackPointsData.parse(trackPoints));
                                 }
                        }
                    }

            ..
                    Log.d("StorylineDataCls \t sSo", segment.toString());
                    System.out.println("print segment" + segment);
                    //System.out.println("print segments" + segments);
                    System.out.println("print segmentsJsonArray" + segmentsJsonArray);

                }
            }
        }


        return storylineData;
    }
    return null;


}
/**
     * Parse a {@link org.json.JSONObject} of place, then return the corresponding {@link PlaceData} object.
     * @param jsonObject : the 'place' JSON object to parse
     * @return corresponding {@link PlaceData}
     */
    public static PlaceData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            PlaceData placeData = new PlaceData();

        placeData.id            = jsonObject.optString("id");
        placeData.name          = jsonObject.optString("name");
        placeData.type          = jsonObject.optString("type");
        placeData.foursquareId  = jsonObject.optString("foursquareId");

        JSONObject location = jsonObject.optJSONObject("location");
        if (location != null) {
            placeData.location = LocationData.parse(location);
        }

        JSONArray trackPointsJSONArray      = jsonObject.optJSONArray("foursquareCategoryIds");
        placeData.foursquareCategoryIds = new ArrayList<String>();
        if (trackPointsJSONArray != null) {
            for (int i = 0; i < trackPointsJSONArray.length(); i++) {
                String categoryId  = trackPointsJSONArray.optString(i);
                if (categoryId != null && categoryId.length() > 0) {

                    placeData.foursquareCategoryIds.add(categoryId);
                }
            }
        }


        return placeData;
    }
    return null;
}
/**
     * Parse a {@link org.json.JSONObject} from trackPoints {@link org.json.JSONArray}, then return the corresponding
     * {@link LocationData} object.
     * @param jsonObject : the 'trackPoint' JSON object to parse
     * @return corresponding {@link LocationData}
     */
    public static LocationData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                LocationData trackPointsData = new LocationData();
                trackPointsData.lat     = jsonObject.optString("lat");
                trackPointsData.lon     = jsonObject.optString("lon");


            return trackPointsData;
        }
        return null;
    }

}
/**
 * Parse a {@link org.json.JSONObject} from trackPoints {@link org.json.JSONArray}, then return the corresponding
 * {@link TrackPointsData} object.
 * @param jsonObject : the 'trackPoint' JSON object to parse
 * @return corresponding {@link TrackPointsData}
 */
public static TrackPointsData parse(JSONObject jsonObject) {
    if (jsonObject != null) {
            TrackPointsData trackPointsData = new TrackPointsData();
            trackPointsData.lat     = jsonObject.optString("lat");
            trackPointsData.lon     = jsonObject.optString("lon");
            trackPointsData.time    = jsonObject.optString("time");


            return trackPointsData;
    }
    return null;
}

}
/**
     * Parse a {@link org.json.JSONObject} from activities {@link org.json.JSONArray}, then return the corresponding
     * {@link ActivityData} object.
     * @param jsonObject : the 'activity' JSON object to parse
     * @return corresponding {@link ActivityData}
     */
    public static ActivityData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            ActivityData activityData = new ActivityData();
                activityData.activity       = jsonObject.optString("activity");
                activityData.group          = jsonObject.optString("group");
                activityData.manual         = jsonObject.optString("manual");
                activityData.startTime      = jsonObject.optString("startTime");
                activityData.endTime        = jsonObject.optString("endTime");
                activityData.duration       = jsonObject.optInt("duration");
                activityData.distance       = jsonObject.optInt("distance");
                activityData.steps          = jsonObject.optInt("steps");
                activityData.calories       = jsonObject.optInt("calories");
            JSONArray trackPointsJSONArray      = jsonObject.optJSONArray("trackPoints");

                activityData.trackPoints = new ArrayList<TrackPointsData>();
                if (trackPointsJSONArray != null) {
                    for (int i = 0; i < trackPointsJSONArray.length(); i++) {
                        JSONObject summaryJsonObject = trackPointsJSONArray.optJSONObject(i);
                        if (summaryJsonObject != null) {



                            activityData.trackPoints.add(TrackPointsData.parse(summaryJsonObject));


                        }
                    }
                }



                return activityData;
        }
        return null;


    }


}
/**
     * Parse a {@link org.json.JSONObject} from segments {@link org.json.JSONArray}, then return the corresponding {@link SegmentData} object.
     * @param jsonObject : the 'segment' JSON object to parse
     * @return corresponding {@link SegmentData}
     */
    public static SegmentData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            SegmentData segmentData = new SegmentData();
            segmentData.type        = jsonObject.optString("type");
            segmentData.startTime   = jsonObject.optString("startTime");
            segmentData.endTime     = jsonObject.optString("endTime");
            segmentData.lastUpdate  = jsonObject.optString("lastUpdate");
            segmentData.name    = jsonObject.optString("name");

            JSONArray activitiesJSONArray = jsonObject.optJSONArray("activities");
            segmentData.activities = new ArrayList<ActivityData>();
            if (activitiesJSONArray != null) {
                for (int i = 0; i < activitiesJSONArray.length(); i++) {
                    JSONObject activityJsonObject = activitiesJSONArray.optJSONObject(i);
                    if (activityJsonObject != null) {


                        placeData = (PlaceData) activityJsonObject.opt(String.valueOf(placeData));
                        segmentData.setPlace(placeData);



                        segmentData.activities.add(ActivityData.parse(activityJsonObject));
                    }
                }
            }

            JSONObject placeJsonObject = jsonObject.optJSONObject("place");
            if (placeJsonObject != null) {
                segmentData.place = PlaceData.parse(placeJsonObject);
            }

            return segmentData;
        }
        return null;
    }
}
/**
     * Parse a {@link org.json.JSONObject} from summary {@link org.json.JSONArray}, then return the corresponding {@link SummaryData} object.
     * @param jsonObject : the 'summary' JSON object to parse
     * @return corresponding {@link SummaryData}
     */
    public static SummaryData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                SummaryData summary = new SummaryData();
                summary.activity        = jsonObject.optString("activity");
                summary.group           = jsonObject.optString("group");
                summary.duration        = jsonObject.optInt("duration");
                summary.distance        = jsonObject.optInt("distance");
                summary.steps           = jsonObject.optInt("steps");
                summary.calories        = jsonObject.optInt("calories");

            //Log.d("json", summary.toString());



            return summary;
        }
        return null;
    }
}
public static SummaryListData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                SummaryListData summary = new SummaryListData();

                summary.date            = jsonObject.optString("date");
                summary.caloriesIdle    = jsonObject.optString("caloriesIdle");
                summary.lastUpdate      = jsonObject.optString("lastUpdate");
                summary.summaries       = new ArrayList<SummaryData>();

                JSONArray summariesJsonArray= jsonObject.optJSONArray("summary");
                if (summariesJsonArray != null) {
                    for (int i = 0; i < summariesJsonArray.length(); i++) {
                        JSONObject summaryJsonObject = summariesJsonArray.optJSONObject(i);
                        if (summaryJsonObject != null) {
                            summary.summaries.add(SummaryData.parse(summaryJsonObject));

                            Log.d("summaryHandler", summaryJsonObject.toString());


                        }
                    }
                }

                return summary;
        }
        return null;
    }


}
活动数据类:

/**
 * Parse a {@link org.json.JSONObject} from storyline {@link org.json.JSONArray}, then return the corresponding {@link StorylineData} object.
 *
 * @param jsonObject : the storyline JSON object received from server
 * @return corresponding {@link StorylineData}
 */
public static StorylineData parse(JSONObject jsonObject) throws JSONException {
    if (jsonObject != null) {

        StorylineData storylineData = new StorylineData();

        storylineData.date = jsonObject.optString("date");
        storylineData.caloriesIdle = jsonObject.optInt("caloriesIdle");
        storylineData.lastUpdate = jsonObject.optString("lastUpdate");
        storylineData.summary = new ArrayList<>();
        storylineData.segments = new ArrayList<>();

        JSONArray summariesJsonArray = jsonObject.optJSONArray("summary");

        if (summariesJsonArray != null)
        for (int i = 0; i < summariesJsonArray.length(); i++) {

            JSONObject summaryJsonObject = summariesJsonArray.optJSONObject(i);

                    if (summaryJsonObject != null) {
                    summariesJsonArray.getJSONObject(i).getString("distance");

                        String group = summaryJsonObject.optString("group");

                        Integer distance = summaryJsonObject.optInt("distance");
                        storylineData.setDistance(distance);
...
                    storylineData.summary.add(SummaryData.parse(summaryJsonObject));

                        Log.d("StorylineDataCls \t sJo", summaryJsonObject.toString() + "Log\n");
                        System.out.println("print distance" + summariesJsonArray.getJSONObject(i).getString("distance"));       
                        System.out.println("print summary" + summaryJsonObject);

                }
            }

        JSONArray segmentsJsonArray = jsonObject.optJSONArray("segments");
        if (segmentsJsonArray != null) {

            for (int i = 0; i < segmentsJsonArray.length(); i++) {
                JSONObject segment = segmentsJsonArray.optJSONObject(i);

                if (segment != null) {

                    JSONArray activitiesJsonArray = segment.optJSONArray("activities");
                    if (activitiesJsonArray!=null) {

                        for (int j = 0; j < activitiesJsonArray.length(); j++) {
                            JSONObject trackPoints = activitiesJsonArray.optJSONObject(j);
                            if(trackPoints != null){
                        ...
                    storylineData.trackPoints.add(TrackPointsData.parse(trackPoints));
                                 }
                        }
                    }

            ..
                    Log.d("StorylineDataCls \t sSo", segment.toString());
                    System.out.println("print segment" + segment);
                    //System.out.println("print segments" + segments);
                    System.out.println("print segmentsJsonArray" + segmentsJsonArray);

                }
            }
        }


        return storylineData;
    }
    return null;


}
/**
     * Parse a {@link org.json.JSONObject} of place, then return the corresponding {@link PlaceData} object.
     * @param jsonObject : the 'place' JSON object to parse
     * @return corresponding {@link PlaceData}
     */
    public static PlaceData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            PlaceData placeData = new PlaceData();

        placeData.id            = jsonObject.optString("id");
        placeData.name          = jsonObject.optString("name");
        placeData.type          = jsonObject.optString("type");
        placeData.foursquareId  = jsonObject.optString("foursquareId");

        JSONObject location = jsonObject.optJSONObject("location");
        if (location != null) {
            placeData.location = LocationData.parse(location);
        }

        JSONArray trackPointsJSONArray      = jsonObject.optJSONArray("foursquareCategoryIds");
        placeData.foursquareCategoryIds = new ArrayList<String>();
        if (trackPointsJSONArray != null) {
            for (int i = 0; i < trackPointsJSONArray.length(); i++) {
                String categoryId  = trackPointsJSONArray.optString(i);
                if (categoryId != null && categoryId.length() > 0) {

                    placeData.foursquareCategoryIds.add(categoryId);
                }
            }
        }


        return placeData;
    }
    return null;
}
/**
     * Parse a {@link org.json.JSONObject} from trackPoints {@link org.json.JSONArray}, then return the corresponding
     * {@link LocationData} object.
     * @param jsonObject : the 'trackPoint' JSON object to parse
     * @return corresponding {@link LocationData}
     */
    public static LocationData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                LocationData trackPointsData = new LocationData();
                trackPointsData.lat     = jsonObject.optString("lat");
                trackPointsData.lon     = jsonObject.optString("lon");


            return trackPointsData;
        }
        return null;
    }

}
/**
 * Parse a {@link org.json.JSONObject} from trackPoints {@link org.json.JSONArray}, then return the corresponding
 * {@link TrackPointsData} object.
 * @param jsonObject : the 'trackPoint' JSON object to parse
 * @return corresponding {@link TrackPointsData}
 */
public static TrackPointsData parse(JSONObject jsonObject) {
    if (jsonObject != null) {
            TrackPointsData trackPointsData = new TrackPointsData();
            trackPointsData.lat     = jsonObject.optString("lat");
            trackPointsData.lon     = jsonObject.optString("lon");
            trackPointsData.time    = jsonObject.optString("time");


            return trackPointsData;
    }
    return null;
}

}
/**
     * Parse a {@link org.json.JSONObject} from activities {@link org.json.JSONArray}, then return the corresponding
     * {@link ActivityData} object.
     * @param jsonObject : the 'activity' JSON object to parse
     * @return corresponding {@link ActivityData}
     */
    public static ActivityData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            ActivityData activityData = new ActivityData();
                activityData.activity       = jsonObject.optString("activity");
                activityData.group          = jsonObject.optString("group");
                activityData.manual         = jsonObject.optString("manual");
                activityData.startTime      = jsonObject.optString("startTime");
                activityData.endTime        = jsonObject.optString("endTime");
                activityData.duration       = jsonObject.optInt("duration");
                activityData.distance       = jsonObject.optInt("distance");
                activityData.steps          = jsonObject.optInt("steps");
                activityData.calories       = jsonObject.optInt("calories");
            JSONArray trackPointsJSONArray      = jsonObject.optJSONArray("trackPoints");

                activityData.trackPoints = new ArrayList<TrackPointsData>();
                if (trackPointsJSONArray != null) {
                    for (int i = 0; i < trackPointsJSONArray.length(); i++) {
                        JSONObject summaryJsonObject = trackPointsJSONArray.optJSONObject(i);
                        if (summaryJsonObject != null) {



                            activityData.trackPoints.add(TrackPointsData.parse(summaryJsonObject));


                        }
                    }
                }



                return activityData;
        }
        return null;


    }


}
/**
     * Parse a {@link org.json.JSONObject} from segments {@link org.json.JSONArray}, then return the corresponding {@link SegmentData} object.
     * @param jsonObject : the 'segment' JSON object to parse
     * @return corresponding {@link SegmentData}
     */
    public static SegmentData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            SegmentData segmentData = new SegmentData();
            segmentData.type        = jsonObject.optString("type");
            segmentData.startTime   = jsonObject.optString("startTime");
            segmentData.endTime     = jsonObject.optString("endTime");
            segmentData.lastUpdate  = jsonObject.optString("lastUpdate");
            segmentData.name    = jsonObject.optString("name");

            JSONArray activitiesJSONArray = jsonObject.optJSONArray("activities");
            segmentData.activities = new ArrayList<ActivityData>();
            if (activitiesJSONArray != null) {
                for (int i = 0; i < activitiesJSONArray.length(); i++) {
                    JSONObject activityJsonObject = activitiesJSONArray.optJSONObject(i);
                    if (activityJsonObject != null) {


                        placeData = (PlaceData) activityJsonObject.opt(String.valueOf(placeData));
                        segmentData.setPlace(placeData);



                        segmentData.activities.add(ActivityData.parse(activityJsonObject));
                    }
                }
            }

            JSONObject placeJsonObject = jsonObject.optJSONObject("place");
            if (placeJsonObject != null) {
                segmentData.place = PlaceData.parse(placeJsonObject);
            }

            return segmentData;
        }
        return null;
    }
}
/**
     * Parse a {@link org.json.JSONObject} from summary {@link org.json.JSONArray}, then return the corresponding {@link SummaryData} object.
     * @param jsonObject : the 'summary' JSON object to parse
     * @return corresponding {@link SummaryData}
     */
    public static SummaryData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                SummaryData summary = new SummaryData();
                summary.activity        = jsonObject.optString("activity");
                summary.group           = jsonObject.optString("group");
                summary.duration        = jsonObject.optInt("duration");
                summary.distance        = jsonObject.optInt("distance");
                summary.steps           = jsonObject.optInt("steps");
                summary.calories        = jsonObject.optInt("calories");

            //Log.d("json", summary.toString());



            return summary;
        }
        return null;
    }
}
public static SummaryListData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                SummaryListData summary = new SummaryListData();

                summary.date            = jsonObject.optString("date");
                summary.caloriesIdle    = jsonObject.optString("caloriesIdle");
                summary.lastUpdate      = jsonObject.optString("lastUpdate");
                summary.summaries       = new ArrayList<SummaryData>();

                JSONArray summariesJsonArray= jsonObject.optJSONArray("summary");
                if (summariesJsonArray != null) {
                    for (int i = 0; i < summariesJsonArray.length(); i++) {
                        JSONObject summaryJsonObject = summariesJsonArray.optJSONObject(i);
                        if (summaryJsonObject != null) {
                            summary.summaries.add(SummaryData.parse(summaryJsonObject));

                            Log.d("summaryHandler", summaryJsonObject.toString());


                        }
                    }
                }

                return summary;
        }
        return null;
    }


}
HTTPCall类:

汇总列表数据类:

/**
 * Parse a {@link org.json.JSONObject} from storyline {@link org.json.JSONArray}, then return the corresponding {@link StorylineData} object.
 *
 * @param jsonObject : the storyline JSON object received from server
 * @return corresponding {@link StorylineData}
 */
public static StorylineData parse(JSONObject jsonObject) throws JSONException {
    if (jsonObject != null) {

        StorylineData storylineData = new StorylineData();

        storylineData.date = jsonObject.optString("date");
        storylineData.caloriesIdle = jsonObject.optInt("caloriesIdle");
        storylineData.lastUpdate = jsonObject.optString("lastUpdate");
        storylineData.summary = new ArrayList<>();
        storylineData.segments = new ArrayList<>();

        JSONArray summariesJsonArray = jsonObject.optJSONArray("summary");

        if (summariesJsonArray != null)
        for (int i = 0; i < summariesJsonArray.length(); i++) {

            JSONObject summaryJsonObject = summariesJsonArray.optJSONObject(i);

                    if (summaryJsonObject != null) {
                    summariesJsonArray.getJSONObject(i).getString("distance");

                        String group = summaryJsonObject.optString("group");

                        Integer distance = summaryJsonObject.optInt("distance");
                        storylineData.setDistance(distance);
...
                    storylineData.summary.add(SummaryData.parse(summaryJsonObject));

                        Log.d("StorylineDataCls \t sJo", summaryJsonObject.toString() + "Log\n");
                        System.out.println("print distance" + summariesJsonArray.getJSONObject(i).getString("distance"));       
                        System.out.println("print summary" + summaryJsonObject);

                }
            }

        JSONArray segmentsJsonArray = jsonObject.optJSONArray("segments");
        if (segmentsJsonArray != null) {

            for (int i = 0; i < segmentsJsonArray.length(); i++) {
                JSONObject segment = segmentsJsonArray.optJSONObject(i);

                if (segment != null) {

                    JSONArray activitiesJsonArray = segment.optJSONArray("activities");
                    if (activitiesJsonArray!=null) {

                        for (int j = 0; j < activitiesJsonArray.length(); j++) {
                            JSONObject trackPoints = activitiesJsonArray.optJSONObject(j);
                            if(trackPoints != null){
                        ...
                    storylineData.trackPoints.add(TrackPointsData.parse(trackPoints));
                                 }
                        }
                    }

            ..
                    Log.d("StorylineDataCls \t sSo", segment.toString());
                    System.out.println("print segment" + segment);
                    //System.out.println("print segments" + segments);
                    System.out.println("print segmentsJsonArray" + segmentsJsonArray);

                }
            }
        }


        return storylineData;
    }
    return null;


}
/**
     * Parse a {@link org.json.JSONObject} of place, then return the corresponding {@link PlaceData} object.
     * @param jsonObject : the 'place' JSON object to parse
     * @return corresponding {@link PlaceData}
     */
    public static PlaceData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            PlaceData placeData = new PlaceData();

        placeData.id            = jsonObject.optString("id");
        placeData.name          = jsonObject.optString("name");
        placeData.type          = jsonObject.optString("type");
        placeData.foursquareId  = jsonObject.optString("foursquareId");

        JSONObject location = jsonObject.optJSONObject("location");
        if (location != null) {
            placeData.location = LocationData.parse(location);
        }

        JSONArray trackPointsJSONArray      = jsonObject.optJSONArray("foursquareCategoryIds");
        placeData.foursquareCategoryIds = new ArrayList<String>();
        if (trackPointsJSONArray != null) {
            for (int i = 0; i < trackPointsJSONArray.length(); i++) {
                String categoryId  = trackPointsJSONArray.optString(i);
                if (categoryId != null && categoryId.length() > 0) {

                    placeData.foursquareCategoryIds.add(categoryId);
                }
            }
        }


        return placeData;
    }
    return null;
}
/**
     * Parse a {@link org.json.JSONObject} from trackPoints {@link org.json.JSONArray}, then return the corresponding
     * {@link LocationData} object.
     * @param jsonObject : the 'trackPoint' JSON object to parse
     * @return corresponding {@link LocationData}
     */
    public static LocationData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                LocationData trackPointsData = new LocationData();
                trackPointsData.lat     = jsonObject.optString("lat");
                trackPointsData.lon     = jsonObject.optString("lon");


            return trackPointsData;
        }
        return null;
    }

}
/**
 * Parse a {@link org.json.JSONObject} from trackPoints {@link org.json.JSONArray}, then return the corresponding
 * {@link TrackPointsData} object.
 * @param jsonObject : the 'trackPoint' JSON object to parse
 * @return corresponding {@link TrackPointsData}
 */
public static TrackPointsData parse(JSONObject jsonObject) {
    if (jsonObject != null) {
            TrackPointsData trackPointsData = new TrackPointsData();
            trackPointsData.lat     = jsonObject.optString("lat");
            trackPointsData.lon     = jsonObject.optString("lon");
            trackPointsData.time    = jsonObject.optString("time");


            return trackPointsData;
    }
    return null;
}

}
/**
     * Parse a {@link org.json.JSONObject} from activities {@link org.json.JSONArray}, then return the corresponding
     * {@link ActivityData} object.
     * @param jsonObject : the 'activity' JSON object to parse
     * @return corresponding {@link ActivityData}
     */
    public static ActivityData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            ActivityData activityData = new ActivityData();
                activityData.activity       = jsonObject.optString("activity");
                activityData.group          = jsonObject.optString("group");
                activityData.manual         = jsonObject.optString("manual");
                activityData.startTime      = jsonObject.optString("startTime");
                activityData.endTime        = jsonObject.optString("endTime");
                activityData.duration       = jsonObject.optInt("duration");
                activityData.distance       = jsonObject.optInt("distance");
                activityData.steps          = jsonObject.optInt("steps");
                activityData.calories       = jsonObject.optInt("calories");
            JSONArray trackPointsJSONArray      = jsonObject.optJSONArray("trackPoints");

                activityData.trackPoints = new ArrayList<TrackPointsData>();
                if (trackPointsJSONArray != null) {
                    for (int i = 0; i < trackPointsJSONArray.length(); i++) {
                        JSONObject summaryJsonObject = trackPointsJSONArray.optJSONObject(i);
                        if (summaryJsonObject != null) {



                            activityData.trackPoints.add(TrackPointsData.parse(summaryJsonObject));


                        }
                    }
                }



                return activityData;
        }
        return null;


    }


}
/**
     * Parse a {@link org.json.JSONObject} from segments {@link org.json.JSONArray}, then return the corresponding {@link SegmentData} object.
     * @param jsonObject : the 'segment' JSON object to parse
     * @return corresponding {@link SegmentData}
     */
    public static SegmentData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
            SegmentData segmentData = new SegmentData();
            segmentData.type        = jsonObject.optString("type");
            segmentData.startTime   = jsonObject.optString("startTime");
            segmentData.endTime     = jsonObject.optString("endTime");
            segmentData.lastUpdate  = jsonObject.optString("lastUpdate");
            segmentData.name    = jsonObject.optString("name");

            JSONArray activitiesJSONArray = jsonObject.optJSONArray("activities");
            segmentData.activities = new ArrayList<ActivityData>();
            if (activitiesJSONArray != null) {
                for (int i = 0; i < activitiesJSONArray.length(); i++) {
                    JSONObject activityJsonObject = activitiesJSONArray.optJSONObject(i);
                    if (activityJsonObject != null) {


                        placeData = (PlaceData) activityJsonObject.opt(String.valueOf(placeData));
                        segmentData.setPlace(placeData);



                        segmentData.activities.add(ActivityData.parse(activityJsonObject));
                    }
                }
            }

            JSONObject placeJsonObject = jsonObject.optJSONObject("place");
            if (placeJsonObject != null) {
                segmentData.place = PlaceData.parse(placeJsonObject);
            }

            return segmentData;
        }
        return null;
    }
}
/**
     * Parse a {@link org.json.JSONObject} from summary {@link org.json.JSONArray}, then return the corresponding {@link SummaryData} object.
     * @param jsonObject : the 'summary' JSON object to parse
     * @return corresponding {@link SummaryData}
     */
    public static SummaryData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                SummaryData summary = new SummaryData();
                summary.activity        = jsonObject.optString("activity");
                summary.group           = jsonObject.optString("group");
                summary.duration        = jsonObject.optInt("duration");
                summary.distance        = jsonObject.optInt("distance");
                summary.steps           = jsonObject.optInt("steps");
                summary.calories        = jsonObject.optInt("calories");

            //Log.d("json", summary.toString());



            return summary;
        }
        return null;
    }
}
public static SummaryListData parse(JSONObject jsonObject) {
        if (jsonObject != null) {
                SummaryListData summary = new SummaryListData();

                summary.date            = jsonObject.optString("date");
                summary.caloriesIdle    = jsonObject.optString("caloriesIdle");
                summary.lastUpdate      = jsonObject.optString("lastUpdate");
                summary.summaries       = new ArrayList<SummaryData>();

                JSONArray summariesJsonArray= jsonObject.optJSONArray("summary");
                if (summariesJsonArray != null) {
                    for (int i = 0; i < summariesJsonArray.length(); i++) {
                        JSONObject summaryJsonObject = summariesJsonArray.optJSONObject(i);
                        if (summaryJsonObject != null) {
                            summary.summaries.add(SummaryData.parse(summaryJsonObject));

                            Log.d("summaryHandler", summaryJsonObject.toString());


                        }
                    }
                }

                return summary;
        }
        return null;
    }


}
publicstaticsummarylistdataparse(jsonobjectjsonobject){
if(jsonObject!=null){
SummaryListData summary=新的SummaryListData();
summary.date=jsonObject.optString(“日期”);
summary.caroriesidle=jsonObject.optString(“caroriesidle”);
summary.lastUpdate=jsonObject.optString(“lastUpdate”);
summary.summaries=新的ArrayList();
JSONArray summariesJsonArray=jsonObject.optJSONArray(“summary”);
if(summariesJsonArray!=null){
for(int i=0;i
这里是解决问题的另一种方法

按照以下步骤操作:

1) 在android项目中导入Jackson库

2) 复制json数据并将其粘贴到文本部分,然后单击查看器选项卡

3) 导入库后,复制JSON数据并将其粘贴到编辑文本框中

  • 将源类型设置为JSON

  • 将注释样式设置为Jackson 2.x

  • 然后单击“预览”
  • 它将弹出一个包含所有锅炉板代码的窗口,现在将这些数据以不同的类复制到相应的包中,例如com.android.json.pojo
  • 相应地更改类的名称,例如某些类名
4) 现在,使用以下代码从服务器解析获取json字符串

RootElement rootElement = null;
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.AUTO_CLOSE_SOURCE, true);
// this line is very important
objectMapper.configure(

DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

try {
        rootElement = objectMapper.readValue(result, RootElement.class);
    } catch (JsonParseException e) {
            e.printStackTrace();
    } catch (JsonMappingException e) {
            e.printStackTrace();
    }
例如,RootElement类只是具有与第一个元素相同的json属性的类

@JsonPropertyOrder({
"date",
"summary",
"segments",
"caloriesIdle",
"lastUpdate"
})

您的rootElement现在已解析数据。

这里是解决问题的另一种方法

按照以下步骤操作:

1) 在android项目中导入Jackson库

2) 复制json数据并将其粘贴到文本部分,然后单击查看器选项卡

3) 导入库后,复制JSON数据并将其粘贴到编辑文本框中

  • 将源类型设置为JSON

  • 将注释样式设置为Jackson 2.x

  • 然后单击“预览”
  • 它将弹出一个包含所有锅炉板代码的窗口,现在将这些数据以不同的类复制到相应的包中,例如com.android.json.pojo
  • 相应地更改类的名称,例如某些类名
4) 现在,使用以下代码从服务器解析获取json字符串

RootElement rootElement = null;
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.AUTO_CLOSE_SOURCE, true);
// this line is very important
objectMapper.configure(

DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);

try {
        rootElement = objectMapper.readValue(result, RootElement.class);
    } catch (JsonParseException e) {
            e.printStackTrace();
    } catch (JsonMappingException e) {
            e.printStackTrace();
    }
例如,RootElement类只是具有与第一个元素相同的json属性的类

@JsonPropertyOrder({
"date",
"summary",
"segments",
"caloriesIdle",
"lastUpdate"
})

您的rootElement现在已解析数据。

这是您的有效json响应

[
    {
        "date": "20121212",
        "summary": [
            {
                "activity": "walking",
                "group": "walking",
                "duration": 3333,
                "distance": 3333,
                "steps": 3333,
                "calories": 300
            }
        ],
        "segments": [
            {
                "type": "place",
                "startTime": "20121212T000000+0200",
                "endTime": "20121212T071430+0200",
                "place": {
                    "id": 1,
                    "type": "unknown",
                    "location": {
                        "lat": 55.55555,
                        "lon": 33.33333
                    }
                },
                "lastUpdate": "20130317T121143Z"
            },
            {
                "type": "move",
                "startTime": "20121212T071430+0200",
                "endTime": "20121212T074617+0200",
                "activities": [
                    {
                        "activity": "walking",
                        "group": "walking",
                        "manual": false,
                        "startTime": "20121212T071430+0200",
                        "endTime": "20121212T072732+0200",
                        "duration": 782,
                        "distance": 1251,
                        "steps": 1353,
                        "calories": 99,
                        "trackPoints": [
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T071430+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T072732+0200"
                            }
                        ]
                    },
                    {
                        "activity": "transport",
                        "group": "transport",
                        "manual": false,
                        "startTime": "20121212T072732+0200",
                        "endTime": "20121212T074616+0200",
                        "duration": 1124,
                        "distance": 8443,
                        "trackPoints": [
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T072732+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T074208+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T074617+0200"
                            }
                        ]
                    }
                ],
                "lastUpdate": "20130317T121143Z"
            },
            {
                "type": "place",
                "startTime": "20121212T074617+0200",
                "endTime": "20121212T100051+0200",
                "place": {
                    "id": 2,
                    "type": "unknown",
                    "location": {
                        "lat": 55.55555,
                        "lon": 33.33333
                    }
                },
                "activities": [
                    {
                        "activity": "walking_on_treadmill",
                        "group": "walking",
                        "manual": true,
                        "duration": 270,
                        "steps": 303,
                        "calories": 30,
                        "trackPoints": []
                    }
                ],
                "lastUpdate": "20130317T121143Z"
            },
            {
                "type": "place",
                "startTime": "20121212T100715+0200",
                "endTime": "20121212T110530+0200",
                "place": {
                    "id": 4,
                    "name": "test",
                    "type": "foursquare",
                    "foursquareId": "4df0fdb17d8ba370a011d24c",
                    "foursquareCategoryIds": [
                        "4bf58dd8d48988d125941735"
                    ],
                    "location": {
                        "lat": 55.55555,
                        "lon": 33.33333
                    }
                },
                "activities": [
                    {
                        "activity": "walking",
                        "group": "walking",
                        "manual": false,
                        "startTime": "20121212T101215+0200",
                        "endTime": "20121212T101255+0200",
                        "duration": 40,
                        "distance": 18,
                        "steps": 37,
                        "calories": 99,
                        "trackPoints": [
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T101215+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T101255+0200"
                            }
                        ]
                    }
                ],
                "lastUpdate": "20130317T121143Z"
            },
            {
                "type": "move",
                "startTime": "20121212T110530+0200",
                "endTime": "20121212T111129+0200",
                "activities": [
                    {
                        "activity": "walking",
                        "group": "walking",
                        "manual": false,
                        "startTime": "20121212T110530+0200",
                        "endTime": "20121212T111128+0200",
                        "duration": 358,
                        "distance": 493,
                        "steps": 441,
                        "calories": 99,
                        "trackPoints": [
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T110531+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T110536+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T110947+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T111017+0200"
                            },
                            {
                                "lat": 55.55555,
                                "lon": 33.33333,
                                "time": "20121212T111129+0200"
                            }
                        ]
                    }
                ],
                "lastUpdate": "20130317T121143Z"
            },
            {
                "type": "place",
                "startTime": "20121212T111129+0200",
                "endTime": "20121212T153638+0200",
                "place": {
                    "id": 2,
                    "type": "unknown",
                    "location": {
                        "lat": 55.55555,
                        "lon": 33.33333
                    }
                },
                "activities": [
                    {
                        "activity": "zumba",
                        "manual": true,
                        "duration": 570,
                        "calories": 200,
                        "trackPoints": []
                    }
                ],
                "lastUpdate": "20130317T121143Z"
            },
            {
                "type": "place",
                "startTime": "20121212T160744+0200",
                "endTime": "20121212T232730+0200",
                "place": {
                    "id": 1,
                    "type": "unknown",
                    "location": {
                        "lat": 55.55555,
                        "lon": 33.33333
                    }
                },
                "lastUpdate": "20130317T121143Z"
            }
        ],
        "caloriesIdle": 1785,
        "lastUpdate": "20130317T121143Z"
    }
]
这是你的POJO课程

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
"activity",
"manual",
"duration",
"calories",
"trackPoints"
})
public class Activity {

@JsonProperty("activity")
private String activity;
@JsonProperty("manual")
private Boolean manual;
@JsonProperty("duration")
private Integer duration;
@JsonProperty("calories")
private Integer calories;
@JsonProperty("trackPoints")
private List<Object> trackPoints = new ArrayList<Object>();
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
* 
* @return
* The activity
*/
@JsonProperty("activity")
public String getActivity() {
return activity;
}

/**
* 
* @param activity
* The activity
*/
@JsonProperty("activity")
public void setActivity(String activity) {
this.activity = activity;
}

/**
* 
* @return
* The manual
*/
@JsonProperty("manual")
public Boolean getManual() {
return manual;
}

/**
* 
* @param manual
* The manual
*/
@JsonProperty("manual")
public void setManual(Boolean manual) {
this.manual = manual;
}

/**
* 
* @return
* The duration
*/
@JsonProperty("duration")
public Integer getDuration() {
return duration;
}

/**
* 
* @param duration
* The duration
*/
@JsonProperty("duration")
public void setDuration(Integer duration) {
this.duration = duration;
}

/**
* 
* @return
* The calories
*/
@JsonProperty("calories")
public Integer getCalories() {
return calories;
}

/**
* 
* @param calories
* The calories
*/
@JsonProperty("calories")
public void setCalories(Integer calories) {
this.calories = calories;
}

/**
* 
* @return
* The trackPoints
*/
@JsonProperty("trackPoints")
public List<Object> getTrackPoints() {
return trackPoints;
}

/**
* 
* @param trackPoints
* The trackPoints
*/
@JsonProperty("trackPoints")
public void setTrackPoints(List<Object> trackPoints) {
this.trackPoints = trackPoints;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}
import java.util.ArrayList;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
导入javax.annotation.Generated;
导入com.fasterxml.jackson.annotation.JsonAnyGetter;
导入com.fasterxml.jackson.annotation.JsonAnySetter;
导入com.fasterxml.jackson.annotation.JsonIgnore;
导入com.fasterxml.jackson.annotation.JsonInclude;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入com.fasterxml.jackson.annotation.JsonPropertyOrder;
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
“活动”,
“手册”,
“持续时间”,
“卡路里”,
“轨迹点”
})
公共课堂活动{
@JsonProperty(“活动”)
私人字符串活动;
@JsonProperty(“手册”)
私人布尔手册;
@JsonProperty(“持续时间”)
私有整数持续时间;
@JsonProperty(“卡路里”)
私人整数卡路里;
@JsonProperty(“轨迹点”)
private List trackPoints=new ArrayList();
@杰索尼奥雷
私有映射additionalProperties=new HashMap();
/**
* 
*@返回
*活动
*/
@JsonProperty(“活动”)
公共字符串getActivity(){
返回活动;
}
/**
* 
*@param活动
*活动
*/
@JsonProperty(“活动”)
公共void设置活动(字符串活动){
这个。活动=活动;
}
/**
* 
*@返回
*手册
*/
@JsonProperty(“手册”)
公共布尔getManual(){
退货手册;
}
/**
* 
*@param手册
*手册
*/
@JsonProperty(“手册”)
公共手册(布尔手册){
这个。手动=手动;
}
/**
* 
*@返回
*持续时间
*/
@JsonProperty(“持续时间”)
公共整数getDuration(){
返回时间;
}
/**
* 
*@param持续时间
*持续时间
*/
@JsonProperty(“持续时间”)
公共void setDuration(整数持续时间){
这个。持续时间=持续时间;
}
/**
* 
*@返回
*卡路里
*/
@JsonProperty(“卡路里”)
公共整数getCalories(){
返回热量;
}
/**
* 
*@param卡路里
*卡路里
*/
@JsonProperty(“卡路里”)
公共卡路里(整数卡路里){
这个。卡路里=卡路里