Java Android应用程序是否将内部数组返回为[]或ArrayList内存分配?
您好,我是Java和android新手,我正在尝试解析链接类中的数据,但我不知道如何从一些内部/嵌套的JSONArray中检索JSONObject 我可以从外部JSONArray中检索对象,但看不到如何从StorlineData类中的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
段内部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(“卡路里”)
公共卡路里(整数卡路里){
这个。卡路里=卡路里