简体   繁体   中英

How can i convert JSONObject into JSONArray in android?

Here, is my json data i need to convert this innings object into json array

{
"innings": {
"b_1": {
"batting_order": [
"s_watson",
"a_rahane",
"d_yagnik",
"r_dravid",
"s_binny",
"b_hodge"
],
"runs": 185,
"balls": 120,
"fall_of_wickets": [
"AM Rahane at 71 runs, in 7.2 over",
"DH Yagnik at 84 runs, in 9.3 over",
"RS Dravid at 113 runs, in 13.2 over",
"SR Watson at 159 runs, in 17.3 over"
],
"wide": 0,
"run_rate": "9.25",
"fours": 12,
"run_str": "185/4 in 20.0",
"wickets": 4,
"wicket_order": [
"a_rahane",
"d_yagnik",
"r_dravid",
"s_watson"
],
"extras": 10,
"bowling_order": [
"a_chandila",
"r_shukla",
"j_faulkner",
"k_cooper",
"s_trivedi",
"s_watson",
"s_binny"
],
"key": "b_1",
"noball": 0,
"sixes": 7,
"legbye": 0,
"bye": 0,
"overs": "20.0",
"dotballs": 30,
"partnerships": [
{
"player_a_six": 3,
"player_a_four": 5,
"first_ball": "bfee9a98-76a9-4959-b1cb-638989c96bff",
"overs_balls": "7.1",
"four": 6,
"index": 1,
"six": 3,
"dismissed": false,
"player_b_four": 1,
"start_over": "0.1",
"end_over": "7.1",
"innings": "1",
"player_b_runs": 16,
"player_b_six": 0,
"player_b_balls": 14,
"runs": 71,
"balls": 43,
"player_b": "a_rahane",
"player_a": "s_watson",
"player_a_balls": 29,
"last_ball": "4825aad2-25d8-434c-86bb-11f8eedbdc4f",
"player_a_runs": 54,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "9.91"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "c7351d98-9012-4361-ba2a-f5cd8665587d",
"overs_balls": "2.1",
"four": 1,
"index": 2,
"six": 0,
"dismissed": true,
"player_b_four": 0,
"start_over": "7.2",
"end_over": "9.2",
"innings": "1",
"player_b_runs": 4,
"player_b_six": 0,
"player_b_balls": 5,
"runs": 13,
"balls": 13,
"player_b": "s_watson",
"player_a": "a_rahane",
"player_a_balls": 1,
"last_ball": "c4134225-b057-4a43-9e0f-cd227b377540",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "6.00"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "17d6fc7f-d37e-45ee-9b0a-aaf15221d8c4",
"overs_balls": "3.5",
"four": 1,
"index": 3,
"six": 1,
"dismissed": true,
"player_b_four": 1,
"start_over": "9.3",
"end_over": "13.1",
"innings": "1",
"player_b_runs": 21,
"player_b_six": 1,
"player_b_balls": 14,
"runs": 29,
"balls": 23,
"player_b": "s_watson",
"player_a": "d_yagnik",
"player_a_balls": 1,
"last_ball": "cf9137bb-9fd7-49c1-9fdc-3e5c8492ee3b",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "7.57"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "0ea39992-7647-4916-bfcc-b2beba9dbf00",
"overs_balls": "4.1",
"four": 2,
"index": 4,
"six": 2,
"dismissed": true,
"player_b_four": 0,
"start_over": "13.2",
"end_over": "17.2",
"innings": "1",
"player_b_runs": 22,
"player_b_six": 2,
"player_b_balls": 12,
"runs": 46,
"balls": 25,
"player_b": "s_watson",
"player_a": "r_dravid",
"player_a_balls": 1,
"last_ball": "2eaaa026-485f-493c-9a70-551abc2bb83c",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "11.04"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "4720b7ff-e963-4bc8-9138-6124c2b261fc",
"overs_balls": "2.4",
"four": 2,
"index": 5,
"six": 1,
"dismissed": true,
"player_b_four": 1,
"start_over": "17.3",
"end_over": "19.6",
"innings": "1",
"player_b_runs": 16,
"player_b_six": 1,
"player_b_balls": 9,
"runs": 26,
"balls": 16,
"player_b": "s_binny",
"player_a": "s_watson",
"player_a_balls": 1,
"last_ball": "76481b09-e7e4-4097-9e88-b6884f069082",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "9.75"
}
]
},
"a_1": {
"batting_order": [
"m_vijay",
"m_hussey",
"s_raina",
"ms_dhoni",
"r_jadeja",
"d_bravo",
"c_morris"
],
"runs": 186,
"balls": 119,
"fall_of_wickets": [
"M Vijay at 22 runs, in 2.3 over",
"SK Raina at 112 runs, in 12.4 over",
"MEK Hussey at 154 runs, in 16.1 over",
"RA Jadeja at 154 runs, in 16.3 over",
"MS Dhoni at 175 runs, in 18.6 over"
],
"wide": 0,
"run_rate": "9.38",
"fours": 18,
"run_str": "186/5 in 19.5",
"wickets": 5,
"wicket_order": [
"m_vijay",
"s_raina",
"m_hussey",
"r_jadeja",
"ms_dhoni"
],
"extras": 7,
"bowling_order": [
"m_sharma",
"j_holder",
"c_morris",
"r_ashwin",
"r_jadeja",
"d_bravo"
],
"key": "a_1",
"noball": 0,
"sixes": 4,
"legbye": 0,
"bye": 0,
"overs": "19.5",
"dotballs": 21,
"partnerships": [
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "1dd3e8b3-b7a6-4417-9b2f-28b3b17353d5",
"overs_balls": "2.2",
"four": 2,
"index": 1,
"six": 1,
"dismissed": false,
"player_b_four": 2,
"start_over": "0.1",
"end_over": "2.2",
"innings": "1",
"player_b_runs": 19,
"player_b_six": 1,
"player_b_balls": 10,
"runs": 22,
"balls": 14,
"player_b": "m_hussey",
"player_a": "m_vijay",
"player_a_balls": 4,
"last_ball": "29fdf8bd-57dd-4ed6-982b-033662310923",
"player_a_runs": 3,
"match": "iplt20_2013_g30",
"team": "a",
"run_rate": "9.43"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "777c4f5e-a00d-4ca8-9827-351305db096e",
"overs_balls": "10.1",
"four": 9,
"index": 2,
"six": 2,
"dismissed": true,
"player_b_four": 5,
"start_over": "2.3",
"end_over": "12.3",
"innings": "1",
"player_b_runs": 36,
"player_b_six": 0,
"player_b_balls": 26,
"runs": 90,
"balls": 61,
"player_b": "m_hussey",
"player_a": "m_vijay",
"player_a_balls": 1,
"last_ball": "e826e804-5b8c-4fd2-8771-d2257348f976",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "a",
"run_rate": "8.85"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "69a04225-ed8a-45ba-96af-a1ab8a5ae89e",
"overs_balls": "3.3",
"four": 6,
"index": 3,
"six": 0,
"dismissed": true,
"player_b_four": 6,
"start_over": "12.4",
"end_over": "15.6",
"innings": "1",
"player_b_runs": 33,
"player_b_six": 0,
"player_b_balls": 15,
"runs": 42,
"balls": 21,
"player_b": "m_hussey",
"player_a": "s_raina",
"player_a_balls": 1,
"last_ball": "bf356a48-5701-4d7a-abb0-025566679a1e",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "a",
"run_rate": "12.00"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "7106a8a0-021e-4049-807d-76debe55ac51",
"overs_balls": "1.2",
"four": 0,
"index": 4,
"six": 0,
"dismissed": true,
"player_b_four": 0,
"start_over": "16.1",
"end_over": "16.2",
"innings": "1",
"player_b_runs": 0,
"player_b_six": 0,
"player_b_balls": 0,
"runs": 0,
"balls": 2,
"player_b": "m_hussey",
"player_a": "ms_dhoni",
"player_a_balls": 1,
"last_ball": "5ab8afc4-a9eb-4b86-8a4b-41cf8a69af7e",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "a",
"run_rate": "0.00"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "c88b4bba-adf7-4de1-bf86-cc7b5d5e69ed",
"overs_balls": "2.3",
"four": 1,
"index": 5,
"six": 0,
"dismissed": true,
"player_b_four": 1,
"start_over": "16.3",
"end_over": "18.5",
"innings": "1",
"player_b_runs": 15,
"player_b_six": 0,
"player_b_balls": 9,
"runs": 21,
"balls": 15,
"player_b": "ms_dhoni",
"player_a": "r_jadeja",
"player_a_balls": 1,
"last_ball": "8456c578-31e0-41fe-a3ef-aef99dca68f3",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "a",
"run_rate": "8.40"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "81248550-5945-4b4d-80be-bf7fbec1b607",
"overs_balls": "1.0",
"four": 0,
"index": 6,
"six": 1,
"dismissed": true,
"player_b_four": 0,
"start_over": "18.6",
"end_over": "19.5",
"innings": "1",
"player_b_runs": 10,
"player_b_six": 1,
"player_b_balls": 4,
"runs": 11,
"balls": 6,
"player_b": "d_bravo",
"player_a": "ms_dhoni",
"player_a_balls": 1,
"last_ball": "161e36fd-0821-4697-affb-c99e0a45a66e",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "a",
"run_rate": "11.00"
}
]
},
"b_2": {
"batting_order": [
"s_watson",
"a_rahane",
"d_yagnik",
"r_dravid",
"s_binny",
"b_hodge"
],
"runs": 185,
"balls": 120,
"fall_of_wickets": [
"AM Rahane at 71 runs, in 7.2 over",
"DH Yagnik at 84 runs, in 9.3 over",
"RS Dravid at 113 runs, in 13.2 over",
"SR Watson at 159 runs, in 17.3 over"
],
"wide": 0,
"run_rate": "9.25",
"fours": 12,
"run_str": "185/4 in 20.0",
"wickets": 4,
"wicket_order": [
"a_rahane",
"d_yagnik",
"r_dravid",
"s_watson"
],
"extras": 10,
"bowling_order": [
"a_chandila",
"r_shukla",
"j_faulkner",
"k_cooper",
"s_trivedi",
"s_watson",
"s_binny"
],
"key": "b_1",
"noball": 0,
"sixes": 7,
"legbye": 0,
"bye": 0,
"overs": "20.0",
"dotballs": 30,
"partnerships": [
{
"player_a_six": 3,
"player_a_four": 5,
"first_ball": "bfee9a98-76a9-4959-b1cb-638989c96bff",
"overs_balls": "7.1",
"four": 6,
"index": 1,
"six": 3,
"dismissed": false,
"player_b_four": 1,
"start_over": "0.1",
"end_over": "7.1",
"innings": "1",
"player_b_runs": 16,
"player_b_six": 0,
"player_b_balls": 14,
"runs": 71,
"balls": 43,
"player_b": "a_rahane",
"player_a": "s_watson",
"player_a_balls": 29,
"last_ball": "4825aad2-25d8-434c-86bb-11f8eedbdc4f",
"player_a_runs": 54,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "9.91"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "c7351d98-9012-4361-ba2a-f5cd8665587d",
"overs_balls": "2.1",
"four": 1,
"index": 2,
"six": 0,
"dismissed": true,
"player_b_four": 0,
"start_over": "7.2",
"end_over": "9.2",
"innings": "1",
"player_b_runs": 4,
"player_b_six": 0,
"player_b_balls": 5,
"runs": 13,
"balls": 13,
"player_b": "s_watson",
"player_a": "a_rahane",
"player_a_balls": 1,
"last_ball": "c4134225-b057-4a43-9e0f-cd227b377540",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "6.00"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "17d6fc7f-d37e-45ee-9b0a-aaf15221d8c4",
"overs_balls": "3.5",
"four": 1,
"index": 3,
"six": 1,
"dismissed": true,
"player_b_four": 1,
"start_over": "9.3",
"end_over": "13.1",
"innings": "1",
"player_b_runs": 21,
"player_b_six": 1,
"player_b_balls": 14,
"runs": 29,
"balls": 23,
"player_b": "s_watson",
"player_a": "d_yagnik",
"player_a_balls": 1,
"last_ball": "cf9137bb-9fd7-49c1-9fdc-3e5c8492ee3b",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "7.57"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "0ea39992-7647-4916-bfcc-b2beba9dbf00",
"overs_balls": "4.1",
"four": 2,
"index": 4,
"six": 2,
"dismissed": true,
"player_b_four": 0,
"start_over": "13.2",
"end_over": "17.2",
"innings": "1",
"player_b_runs": 22,
"player_b_six": 2,
"player_b_balls": 12,
"runs": 46,
"balls": 25,
"player_b": "s_watson",
"player_a": "r_dravid",
"player_a_balls": 1,
"last_ball": "2eaaa026-485f-493c-9a70-551abc2bb83c",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "11.04"
},
{
"player_a_six": 0,
"player_a_four": 0,
"first_ball": "4720b7ff-e963-4bc8-9138-6124c2b261fc",
"overs_balls": "2.4",
"four": 2,
"index": 5,
"six": 1,
"dismissed": true,
"player_b_four": 1,
"start_over": "17.3",
"end_over": "19.6",
"innings": "1",
"player_b_runs": 16,
"player_b_six": 1,
"player_b_balls": 9,
"runs": 26,
"balls": 16,
"player_b": "s_binny",
"player_a": "s_watson",
"player_a_balls": 1,
"last_ball": "76481b09-e7e4-4097-9e88-b6884f069082",
"player_a_runs": 0,
"match": "iplt20_2013_g30",
"team": "b",
"run_rate": "9.75"
}
]
}
},
"title": "Chennai Super Kings vs Rajasthan Royals - 30th Match - IPL T20 2013",
"dl_applied": false,
}

Here, I want to get the result like below

{
    "innings": [ 
       {
          "name":"b_1",
          "batting_order": [
"s_watson",
"a_rahane",
"d_yagnik",
"r_dravid",
"s_binny",
"b_hodge"
],
       },
       {
         "name":"a_1",
         "batting_order": [
"s_watson",
"a_rahane",
"d_yagnik",
"r_dravid",
"s_binny",
"b_hodge"
],
       }
    ]
}

How can i convert innings object into JSONArray in android?

Please, help me to solve out this problem.

First your Json data seems very complicated and not clearly classified which will complicate your work, if you have access to the back end of this data try to make them more clear to simplify your work .

Second, to change your data into an array , first you need to have them as a Json object , in case your data is in string format use

JSONObject object = new JSONObject(JsonString);

and finally to convert your object into an array use

JSONArray channelList = object.getJSONArray("Key word");

make sure to use the appropriate key word to get the right array . for example in your case if you used "b_1" as a key word you will get "batting_order": [ "s_watson", "a_rahane", "d_yagnik", "r_dravid", "s_binny", "b_hodge" ] as the first element in your array , "runs": 185 will be the second , and so on .

Try this :

Code:

ArrayList innings_list = new ArrayList();

    JSONArray jsonArrayInnings = new JSONArray();
    JSONObject objectInnings = new JSONObject();
    try {


        JSONObject myObject = new JSONObject(" Your JSOn");


        JSONObject innings = myObject.getJSONObject("innings");
        Iterator<String> iter = innings.keys();

        while (iter.hasNext()) {
            String key = iter.next();
            Log.e("inningskey", key);
            try {


                JSONObject object = innings.getJSONObject(key);

                JSONObject objectKey = new JSONObject();
                objectKey.put("name", key);


                JSONArray jsonArrayBbatting_order = object.getJSONArray("batting_order");


                objectKey.put("batting_order", jsonArrayBbatting_order);
                    Log.e(" objectKey ", objectKey.toString());



                jsonArrayInnings.put(objectKey);
                    Log.e(" objectKey ", objectKey.toString());

            } catch (JSONException e) {
                // Something went wrong!
            }
        }
        objectInnings.put("innings",jsonArrayInnings);
            Log.e("objectInnings ", objectInnings.toString());

    } catch (JSONException e) {
        e.printStackTrace();
    }


}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM