2017-07-24 111 views
1

我想獲取嵌套json數組的數據,但沒有成功。也許有人有一個想法或方向如何做到這一點。我的代碼是 挑戰類如何從嵌套的json數組獲取數據android

public class ChallengeModel { 

private String ChallengeID; 
private String ChallengeDate; 
private String ChallengeName; 
private String ChallengeIcon; 
private String BetID; 
private ChallengeItem challengeItem[]; 

public String getChallengeID() { return ChallengeID; } 
public void setChallengeID(String challengeID) { 
    ChallengeID = challengeID; 
} 
public String getChallengeDate() { 
    return ChallengeDate; 
} 
public void setChallengeDate(String challengeDate) { 
    ChallengeDate = challengeDate; 
} 
public String getChallengeName() { 
    return ChallengeName; 
} 
public void setChallengeName(String challengeName) { 
    ChallengeName = challengeName; 
} 
public String getChallengeIcon() { 
    return ChallengeIcon; 
} 
public void setChallengeIcon(String challengeIcon) { 
    ChallengeIcon = challengeIcon; 
} 
public String getBetID() { 
    return BetID; 
} 
public void setBetID(String betID) { 
    BetID = betID; 
} 
public ChallengeItem[] getChallengeItem() { 
    return challengeItem; 
} 
public void setChallengeItem(ChallengeItem[] challengeItem) { 
this.challengeItem = challengeItem; }} 

在上面的類有嵌套類的Array

public class ChallengeItem { 

private String ChallengeItemID; 
private String ChallengeID; 
private String MatchID; 
private String TeamAName; 
private String TeamBName; 
private String TeamAScore; 
private String TeamBScore; 
private String MatchDate; 
private String MatchTime; 
private String Venue; 
private String VenuCity; 
private String TeamAValue; 
private String TeamBValue; 

public String getChallengeItemID() { 
    return ChallengeItemID; 
} 

public void setChallengeItemID(String challengeItemID) { 
    ChallengeItemID = challengeItemID; 
} 

public String getChallengeID() { 
    return ChallengeID; 
} 

public void setChallengeID(String challengeID) { 
    ChallengeID = challengeID; 
} 

public String getMatchID() { 
    return MatchID; 
} 

public void setMatchID(String matchID) { 
    MatchID = matchID; 
} 

public String getTeamAName() { 
    return TeamAName; 
} 

public void setTeamAName(String teamAName) { 
    TeamAName = teamAName; 
} 

public String getTeamBName() { 
    return TeamBName; 
} 

public void setTeamBName(String teamBName) { 
    TeamBName = teamBName; 
} 

public String getTeamAScore() { 
    return TeamAScore; 
} 

public void setTeamAScore(String teamAScore) { 
    TeamAScore = teamAScore; 
} 

public String getTeamBScore() { 
    return TeamBScore; 
} 

public void setTeamBScore(String teamBScore) { 
    TeamBScore = teamBScore; 
} 

public String getMatchDate() { 
    return MatchDate; 
} 

public void setMatchDate(String matchDate) { 
    MatchDate = matchDate; 
} 

public String getMatchTime() { 
    return MatchTime; 
} 

public void setMatchTime(String matchTime) { 
    MatchTime = matchTime; 
} 

public String getVenue() { 
    return Venue; 
} 

public void setVenue(String venue) { 
    Venue = venue; 
} 

public String getVenuCity() { 
    return VenuCity; 
} 

public void setVenuCity(String venuCity) { 
    VenuCity = venuCity; 
} 

public String getTeamAValue() { 
    return TeamAValue; 
} 

public void setTeamAValue(String teamAValue) { 
    TeamAValue = teamAValue; 
} 

public String getTeamBValue() { 
    return TeamBValue; 
} 

public void setTeamBValue(String teamBValue) { 
    TeamBValue = teamBValue; 
} 

public String getDrawValue() { 
    return DrawValue; 
} 

public void setDrawValue(String drawValue) { 
    DrawValue = drawValue; 
} 

private String DrawValue; 
} 

我的問題是,我如何從JSON到嵌套陣列獲得數據(第一陣列是偉大的工作)

public class ChallengeJsonConvert { 

public static List<ChallengeModel> challengesRequest(String content){ 
    try { 

     JSONArray challengesArray = new JSONArray(content); 

     List<ChallengeModel> challengeModelList = new ArrayList<>(); 

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

      JSONObject obj = challengesArray.getJSONObject(i); 
      ChallengeModel challenge = new ChallengeModel(); 
      challenge.setBetID(obj.getString("BetID")); 
      challenge.setChallengeDate(obj.getString("ChallengeDate")); 
      challenge.setChallengeIcon(obj.getString("ChallengeIcon")); 
      challenge.setChallengeID(obj.getString("ChallengeID")); 
      challenge.setChallengeName(obj.getString("ChallengeName")); 
      challengeModelList.add(challenge); 

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

這是來自服務器的結果

[ 
{ 
"ChallengeID": "1", 
"ChallengeDate": "18/07/2017", 
"ChallengeName": "New Challenge Arrived", 
"ChallengeIcon": "icon.jpg", 
"BetID": "3", 
"challengeItem": [ 
    { 
    "CallengeItemID": "5", 
    "ChallengeID": "1", 
    "MatchID": "845", 
    "TeamAName": "FC Copenhagen (Den)", 
    "TeamBName": "Zilina (Svk)", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "Telia Parken (København)", 
    "VenueCity": "København", 
    "MatchTime": "17:00", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    }, 
    { 
    "CallengeItemID": "6", 
    "ChallengeID": "1", 
    "MatchID": "844", 
    "TeamAName": "Samtredia (Geo)", 
    "TeamBName": "Qarabag (Aze)", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "Boris Paichadze Dinamo Arena (Tbilisi)", 
    "VenueCity": "Tbilisi", 
    "MatchTime": "17:00", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    }, 
    { 
    "CallengeItemID": "7", 
    "ChallengeID": "1", 
    "MatchID": "843", 
    "TeamAName": "Alashkert (Arm)", 
    "TeamBName": "BATE (Blr)", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "", 
    "VenueCity": "", 
    "MatchTime": "16:00", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    }, 
    { 
    "CallengeItemID": "8", 
    "ChallengeID": "1", 
    "MatchID": "842", 
    "TeamAName": "Vardar (Mac)", 
    "TeamBName": "Malmo FF (Swe)", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "", 
    "VenueCity": "", 
    "MatchTime": "16:00", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    }, 
    { 
    "CallengeItemID": "9", 
    "ChallengeID": "1", 
    "MatchID": "841", 
    "TeamAName": "FC Astana (Kaz)", 
    "TeamBName": "Spartaks (Lat)", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "", 
    "VenueCity": "", 
    "MatchTime": "14:00", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    } 
] 
}, 
{ 
"ChallengeID": "2", 
"ChallengeDate": "18/07/2017", 
"ChallengeName": "Tuesday Funday", 
"ChallengeIcon": "icon.jpg", 
"BetID": "3", 
"challengeItem": [ 
    { 
    "CallengeItemID": "1", 
    "ChallengeID": "2", 
    "MatchID": "851", 
    "TeamAName": "Lokomotiv Moscow", 
    "TeamBName": "Arsenal Tula", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "Stadion Lokomotiv (Moskva)", 
    "VenueCity": "Moskva", 
    "MatchTime": "16:30", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    }, 
    { 
    "CallengeItemID": "2", 
    "ChallengeID": "2", 
    "MatchID": "853", 
    "TeamAName": "Dinamo Moskva", 
    "TeamBName": "Spartak Moskva", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "Arena Khimki (Khimki)", 
    "VenueCity": "Khimki", 
    "MatchTime": "16:30", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    }, 
    { 
    "CallengeItemID": "3", 
    "ChallengeID": "2", 
    "MatchID": "852", 
    "TeamAName": "Spartak Moscow", 
    "TeamBName": "Dynamo Moscow", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "Otkrytiye Arena (Moskva)", 
    "VenueCity": "Moskva", 
    "MatchTime": "16:30", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    }, 
    { 
    "CallengeItemID": "4", 
    "ChallengeID": "2", 
    "MatchID": "849", 
    "TeamAName": "Vorskla Poltava", 
    "TeamBName": "Shakhtar Donetsk", 
    "TeamAScore": "0", 
    "TeamBScore": "0", 
    "MatchDate": "18.07.2017", 
    "Venue": "", 
    "VenueCity": "", 
    "MatchTime": "16:00", 
    "TeamAValue": "5.5", 
    "DrawValue": "3.05", 
    "TeamBValue": "1.35" 
    } 
] 
} 
] 
] 
+0

您是否收到異常? –

回答

1

使用列表中進行在類副本的修改和產生的getter setter方法

ChallengeModel

public class ChallengeModel { 
    private String ChallengeID; 
    private String ChallengeDate; 
    private String ChallengeName; 
    private String ChallengeIcon; 
    private String BetID; 
    private List<ChallengeItem> challengeItem; 
    //TODO 
    //Generate Getter and setter 
} 

ChallengeItem

public class ChallengeItem { 
    private String ChallengeItemID; 
    private String ChallengeID; 
    private String MatchID; 
    private String TeamAName; 
    private String TeamBName; 
    private String TeamAScore; 
    private String TeamBScore; 
    private String MatchDate; 
    private String MatchTime; 
    private String Venue; 
    private String VenuCity; 
    private String TeamAValue; 
    private String TeamBValue; 
    //TODO 
    //Generate Getter and setter 
} 

ChallengeJsonConvert

public class ChallengeJsonConvert { 
    public static List<ChallengeModel> challengesRequest(String content) { 
     try { 
      JSONArray challengesArray = new JSONArray(content); 
      List<ChallengeModel> challengeModelList = new ArrayList<>(); 
      for (int i = 0; i < challengesArray.length(); i++) { 
       JSONObject obj = challengesArray.getJSONObject(i); 
       ChallengeModel challenge = new ChallengeModel(); 
       challenge.setBetID(obj.getString("BetID")); 
       challenge.setChallengeDate(obj.getString("ChallengeDate")); 
       challenge.setChallengeIcon(obj.getString("ChallengeIcon")); 
       challenge.setChallengeID(obj.getString("ChallengeID")); 
       challenge.setChallengeName(obj.getString("ChallengeName")); 
       JSONArray challengeItemArray = obj.getJSONArray("challengeItem"); 
       for (int j = 0; j < challengeItemArray.length(); j++) { 

        JSONObject challengeObject = challengeItemArray.getJSONObject(j); 
        ChallengeItem challengeItem = new ChallengeItem(); 
        challengeItem.setChallengeItemID(challengeObject.getString("CallengeItemID")); 
        //TODO 
        //Get other object and set into challengeItem 
        challenge.getChallengeItem().add(challengeItem); 
       } 

       challengeModelList.add(challenge); 
      } 
      return challengeModelList; 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } 
} 
+0

感謝您的回覆。我複製/粘貼你的代碼,但... getChsllengeItem()。add ..在類中是紅色(錯誤)+你的意思是什麼產生getter/setter,在類中有一個getter/setter?!?! – Elidotnet

+0

ahhh好吧,好吧,我錯過了新列表<> – Elidotnet

+0

@Elidotnet它工作的部分? – akhilesh0707