如何在android中将JSONObject转换为JSONArray?

时间:2015-12-28 08:17:41

标签: android

这里,我的json数据是我需要将这个局部对象转换为json数组

{
"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,
}

在这里,我想得到如下结果

{
    "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"
],
       }
    ]
}

如何将innings对象转换为android中的JSONArray?

请帮我解决这个问题。

2 个答案:

答案 0 :(得分:0)

首先,您的Json数据看起来非常复杂,并且没有明确的分类,这会使您的工作变得复杂,如果您可以访问此数据的后端,请尝试使它们更加清晰,以简化您的工作。

其次,要将数据更改为数组,首先需要将它们作为Json对象,以防数据采用字符串格式

JSONObject object = new JSONObject(JsonString);

最后将您的对象转换为数组使用

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

确保使用适当的关键字来获得正确的数组。例如,在您的情况下,如果您使用" b_1" 作为关键词,您将获得 " batting_order":[ " s_watson&#34 ;, " a_rahane&#34 ;, " d_yagnik&#34 ;, " r_dravid&#34 ;, " s_binny&#34 ;, " b_hodge" ] 作为数组中的第一个元素,"运行":185 将是第二个,依此类推。

答案 1 :(得分:0)

试试这个:

代码:

ArrayList innings_list = new ArrayList();

java.lang.IllegalArgumentException: isGooglePlayServicesAvailable should only be called with Context from your application's package. A previous call used package 'com.example.myapp' and this call used package 'com.example.myapp.test'.
at com.google.android.gms.common.zze.zzan(Unknown Source)
at com.google.android.gms.common.zze.isGooglePlayServicesAvailable(Unknown Source)
at com.google.android.gms.common.zzc.isGooglePlayServicesAvailable(Unknown Source)
at com.google.android.gms.common.api.internal.zzh$zzb.zzpt(Unknown Source)
at com.google.android.gms.common.api.internal.zzh$zzf.run(Unknown Source)