1

JSON の解析を手伝ってください。「瞬間」なしでこの JSON を解析し、「瞬間」で解析する方法がわかりません。私のJSON応答:

{
"A": [
    {
        "time0_90": "20",
        "score": "0 : 0",
        "team1": "Россия",
        "team2": "Франция",
        "group": "A",
        "live": "1"
    },
    {
        "time0_90": "20",
        "score": "0 : 0",
        "team1": "Португалия",
        "team2": "Гондурас",
        "group": "A",
        "live": "0",
        "time": "18:30",
        "stadium": "",
        "referee": "судья"
    }
],
"B": [
    {
        "time0_90": "3",
        "score": "1 : 0",
        "moment": [
            {
                "class_moment": "g",
                "name1": "Халк",
                "time0_90Moment": "5",
                "team": "1"
            },
            {
                "class_moment": "sub",
                "name1": "Фред",
                "time0_90Moment": "50",
                "team": "1",
                "name2": "Жо"
            }
        ],
        "team1": "Бразилия",
        "team2": "Испания",
        "group": "B",
        "live": "1"
    }
],
"C": [],
"D": [],
"E": [],
"F": [
    {
        "time": "15:00",
        "stadium": "Маракана",
        "referee": "судья",
        "team1": "Россия",
        "team2": "Франция",
        "group": "F",
        "live": "0"
    }
],
"G": [],
"H": []
}

このコードは、「瞬間」のない解析応答です。「瞬間」で応答を解析して配列に保存する方法は?

JSONObject jsonResponse = new JSONObject(jsonResult);
   for (int j=0; j<8; j++){
       String[] groupName = {"A", "B", "C", "D", "E", "F", "G", "H"};
   JSONArray jsonMainNode = jsonResponse.optJSONArray(groupName[j]);
   if (jsonMainNode.length() == 0){ continue;}
   else {
   for (int i = 0; i < jsonMainNode.length(); i++) {
    JSONObject jsonChildNode = jsonMainNode.getJSONObject(i);
    team1 = jsonChildNode.optString("team1");
    team2 = jsonChildNode.optString("team2");       
    group = jsonChildNode.optString("group");
    int live = jsonChildNode.getInt("live");
    String time = null;
    if (live == 1){
        time = jsonChildNode.optString("time0_90")+"'";
        score = jsonChildNode.optString("score");
        }
        else {
            score = jsonChildNode.optString("time");
            referee = jsonChildNode.optString("referee");
            time = jsonChildNode.optString("stadium");
            }
4

3 に答える 3

1

JacksonGSONなどの JSON マッピング ライブラリを使用することをお勧めします。JSONを手動で解析するのは、純粋に教育目的でない限り、時間と労力の無駄です。

それ以外は、正しい使用法は .optJSONArray("moment") であり、その後に各結果を JSONObject または同様のものにキャストする反復が続くと思いますか? これを手動で行うのは面倒です。;o

于 2014-01-06T00:49:07.487 に答える