Java Can';t获取一个变量来存储解析后的JSONObject
我试图将我的Java Can';t获取一个变量来存储解析后的JSONObject,java,android,arrays,json,string-parsing,Java,Android,Arrays,Json,String Parsing,我试图将我的summariesJsonArray中解析的每个summaryJsonObject存储到变量storylineData中。我已经浏览了代码,我可以看到原始json到达summaryJsonObject&summariesJsonArray,但是变量storylineData始终保持空值。我在下面包含了我的代码。我还想将在同一方法中解析的数据段存储到变量storylineData中StorylineData是进行解析的类的名称以及json解析返回的变量 故事线数据 public
summariesJsonArray
中解析的每个summaryJsonObject
存储到变量storylineData
中。我已经浏览了代码,我可以看到原始json到达summaryJsonObject
&summariesJsonArray
,但是变量storylineData
始终保持空值。我在下面包含了我的代码。我还想将在同一方法中解析的数据段
存储到变量storylineData
中StorylineData
是进行解析的类的名称以及json解析返回的变量
故事线数据
public class StorylineData {
private static String date;
private ArrayList<SummaryData> summary;
private ArrayList<SegmentData> segments;
private String caloriesIdle;
private String lastUpdate;
public String getDate() {
return date;
}
public ArrayList<SummaryData> getSummary() {
return summary;
}
public ArrayList<SegmentData> getSegments() {
return segments;
}
public String getCaloriesIdle() {
return caloriesIdle;
}
public String getLastUpdate() {
return lastUpdate;
}
public void setDate(String date) {
this.date = date;
}
public void setSummary(ArrayList<SummaryData> summary) {
this.summary = summary;
}
public void setSegments(ArrayList<SegmentData> segments) {
this.segments = segments;
}
public void setCaloriesIdle(String caloriesIdle) {
this.caloriesIdle = caloriesIdle;
}
public void setLastUpdate(String lastUpdate) {
this.lastUpdate = lastUpdate;
}
public static StorylineData parse(JSONObject jsonObject) {
if (jsonObject != null) {
StorylineData storylineData = new StorylineData();
storylineData.date = jsonObject.optString("date");
storylineData.caloriesIdle = jsonObject.optString("caloriesIdle");
storylineData.lastUpdate = jsonObject.optString("lastUpdate");
storylineData.summary = new ArrayList<SummaryData>();
storylineData.segments = new ArrayList<SegmentData>();
JSONArray summariesJsonArray= jsonObject.optJSONArray("summary");
if (summariesJsonArray != null) {
for (int i = 0; i < summariesJsonArray.length(); i++) {
JSONObject summaryJsonObject = summariesJsonArray.optJSONObject(i);
if (summaryJsonObject != null) {
storylineData.summary.add(SummaryData.parse(summaryJsonObject));
Log.d("storylineHandler", summaryJsonObject.toString());
}
}
}
JSONArray segmentsJsonArray = jsonObject.optJSONArray("segments");
if (segmentsJsonArray != null) {
for (int i = 0; i < segmentsJsonArray.length(); i++) {
JSONObject segment = segmentsJsonArray.optJSONObject(i);
if (segment != null) {
storylineData.segments.add(SegmentData.parse(segment));
Log.d("storylineHandler", segment.toString());
}
}
}
return storylineData;
}
return null;
}
}
public class SummaryData extends StorylineData {
private String activity;
private String group;
private String duration;
private String distance;
private String steps;
private String calories;
...getter/Setters...
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.optString("duration");
summary.distance = jsonObject.optString("distance");
summary.steps = jsonObject.optString("steps");
summary.calories = jsonObject.optString("calories");
//Log.d("json", summary.toString());
return summary;
}
return null;
}
}
细分市场
public class SegmentData {
private String type;
private String startTime;
private String endTime;
private PlaceData place;
private ArrayList<ActivityData> activities;
private String lastUpdate;
...getter/Setters...
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");
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) {
segmentData.activities.add(ActivityData.parse(activityJsonObject));
}
}
}
JSONObject placeJsonObject = jsonObject.optJSONObject("place");
if (placeJsonObject != null) {
segmentData.place = PlaceData.parse(placeJsonObject);
}
return segmentData;
}
return null;
}
}
如果您同意使用第三方库,将非常有帮助。这也解释了其他解决方案。将代码张贴在您正在解析Json@dbo您必须检查和/或发布SummaryData.parse和SegmentData.parseplz的代码添加示例jsonHi谢谢,我已经添加了json和Summary&Segment类。您是如何将storylineData设置为null的。。??!!这将被标记为“仅链接”答案!而是添加可能的代码,使其成为一个完整的答案@你看到Json了吗?当我甚至不知道响应是什么样子时,我如何编写代码。但我可以把他引向正确的道路,以实现他的目标。我说的是从给定的链接复制可能的代码,所以,如果在任何情况下,如果链接失效,那么答案仍然是有用的!
public class SegmentData {
private String type;
private String startTime;
private String endTime;
private PlaceData place;
private ArrayList<ActivityData> activities;
private String lastUpdate;
...getter/Setters...
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");
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) {
segmentData.activities.add(ActivityData.parse(activityJsonObject));
}
}
}
JSONObject placeJsonObject = jsonObject.optJSONObject("place");
if (placeJsonObject != null) {
segmentData.place = PlaceData.parse(placeJsonObject);
}
return segmentData;
}
return null;
}
}
[
{
"date": "20121212",
"summary": [
{
"activity": "walking",
"group": "walking",
"duration": 3333,
"distance": 3333,
"steps": 3333,
"calories": 300
},
{
"activity": "walking_on_treadmill",
"group": "walking",
"duration": 270,
"steps": 303,
"calories": 30
},
{
"activity": "transport",
"group": "transport",
"duration": 1124,
"distance": 8443
},
{
"activity": "underground",
"group": "transport",
"duration": 1003,
"distance": 8058
},
{
"activity": "zumba",
"duration": 570,
"calories": 200
}
],
"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": "move",
"startTime": "20121212T100051+0200",
"endTime": "20121212T100715+0200",
"activities": [
{
"activity": "walking",
"group": "walking",
"manual": false,
"startTime": "20121212T100051+0200",
"endTime": "20121212T100715+0200",
"duration": 384,
"distance": 421,
"steps": 488,
"calories": 99,
"trackPoints": [
{
"lat": 55.55555,
"lon": 33.33333,
"time": "20121212T100051+0200"
},
{
"lat": 55.55555,
"lon": 33.33333,
"time": "20121212T100715+0200"
}
]
}
],
"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": "move",
"startTime": "20121212T153638+0200",
"endTime": "20121212T160744+0200",
"activities": [
{
"activity": "underground",
"group": "transport",
"manual": false,
"startTime": "20121212T153638+0200",
"endTime": "20121212T155321+0200",
"duration": 1003,
"distance": 8058,
"trackPoints": [
{
"lat": 55.55555,
"lon": 33.33333,
"time": "20121212T153638+0200"
},
{
"lat": 55.55555,
"lon": 33.33333,
"time": "20121212T155322+0200"
}
]
},
{
"activity": "walking",
"group": "walking",
"manual": false,
"startTime": "20121212T155322+0200",
"endTime": "20121212T160744+0200",
"duration": 862,
"distance": 1086,
"steps": 1257,
"calories": 99,
"trackPoints": [
{
"lat": 55.55555,
"lon": 33.33333,
"time": "20121212T155322+0200"
},
{
"lat": 55.55555,
"lon": 33.33333,
"time": "20121212T155402+0200"
},
{
"lat": 55.55555,
"lon": 33.33333,
"time": "20121212T160744+0200"
}
]
}
],
"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"
}
]