[英]2D Array with variable size
我想要完成的是
String[][] array = new String[sizeX][sizeY]
SizeX基於根JSON數組的長度,sizeY基於根JSON數組內部的數組的長度。
考慮一下,我可以使用單個數組數組,但是我不確定如何引用內部數組以從中獲取信息。 例如:
String[] array = new String[sizeX];
array[i] = new String[sizeY]; // initialized to variable size of JSON
從這里開始,我將如何引用內部數組中的內部數組中的對象?
JSON
{"23591778": {
"pages": [
{
"masteries": [
{
"id": 4211,
"rank": 2
},
{
"id": 4214,
"rank": 2
},
{
"id": 4134,
"rank": 3
},
{
"id": 4124,
"rank": 1
},
{
"id": 4114,
"rank": 1
},
{
"id": 4222,
"rank": 3
},
{
"id": 4112,
"rank": 4
},
{
"id": 4221,
"rank": 1
},
{
"id": 4144,
"rank": 1
},
{
"id": 4122,
"rank": 3
},
{
"id": 4152,
"rank": 3
},
{
"id": 4141,
"rank": 1
},
{
"id": 4111,
"rank": 1
},
{
"id": 4132,
"rank": 1
},
{
"id": 4232,
"rank": 1
},
{
"id": 4162,
"rank": 1
},
{
"id": 4131,
"rank": 1
}
],
"id": 34787712,
"name": "Blind",
"current": false
},
{
"masteries": [
{
"id": 4212,
"rank": 2
},
{
"id": 4233,
"rank": 3
},
{
"id": 4242,
"rank": 1
},
{
"id": 4214,
"rank": 2
},
{
"id": 4114,
"rank": 1
},
{
"id": 4251,
"rank": 1
},
{
"id": 4112,
"rank": 4
},
{
"id": 4222,
"rank": 3
},
{
"id": 4122,
"rank": 3
},
{
"id": 4262,
"rank": 1
},
{
"id": 4224,
"rank": 1
},
{
"id": 4252,
"rank": 3
},
{
"id": 4132,
"rank": 1
},
{
"id": 4241,
"rank": 3
},
{
"id": 4232,
"rank": 1
}
],
"id": 34787713,
"name": "AD/Tank Jungle",
"current": false
},
{
"masteries": [
{
"id": 4242,
"rank": 1
},
{
"id": 4233,
"rank": 3
},
{
"id": 4243,
"rank": 1
},
{
"id": 4211,
"rank": 2
},
{
"id": 4214,
"rank": 2
},
{
"id": 4213,
"rank": 2
},
{
"id": 4114,
"rank": 1
},
{
"id": 4252,
"rank": 2
},
{
"id": 4222,
"rank": 3
},
{
"id": 4113,
"rank": 4
},
{
"id": 4221,
"rank": 1
},
{
"id": 4123,
"rank": 3
},
{
"id": 4262,
"rank": 1
},
{
"id": 4224,
"rank": 1
},
{
"id": 4133,
"rank": 1
},
{
"id": 4234,
"rank": 1
},
{
"id": 4232,
"rank": 1
}
],
"id": 34787714,
"name": "Mumu",
"current": true
},
{
"masteries": [
{
"id": 4211,
"rank": 2
},
{
"id": 4121,
"rank": 1
},
{
"id": 4214,
"rank": 2
},
{
"id": 4134,
"rank": 3
},
{
"id": 4114,
"rank": 1
},
{
"id": 4222,
"rank": 3
},
{
"id": 4112,
"rank": 4
},
{
"id": 4144,
"rank": 1
},
{
"id": 4221,
"rank": 1
},
{
"id": 4152,
"rank": 3
},
{
"id": 4122,
"rank": 3
},
{
"id": 4141,
"rank": 1
},
{
"id": 4111,
"rank": 1
},
{
"id": 4132,
"rank": 1
},
{
"id": 4232,
"rank": 1
},
{
"id": 4162,
"rank": 1
},
{
"id": 4131,
"rank": 1
}
],
"id": 34787715,
"name": "vi/j4/wuk/xin/noc",
"current": false
},
{
"masteries": [
{
"id": 4212,
"rank": 2
},
{
"id": 4353,
"rank": 3
},
{
"id": 4211,
"rank": 2
},
{
"id": 4311,
"rank": 1
},
{
"id": 4362,
"rank": 1
},
{
"id": 4322,
"rank": 3
},
{
"id": 4334,
"rank": 1
},
{
"id": 4332,
"rank": 1
},
{
"id": 4352,
"rank": 1
},
{
"id": 4222,
"rank": 3
},
{
"id": 4314,
"rank": 1
},
{
"id": 4221,
"rank": 1
},
{
"id": 4331,
"rank": 3
},
{
"id": 4324,
"rank": 1
},
{
"id": 4313,
"rank": 3
},
{
"id": 4232,
"rank": 1
},
{
"id": 4342,
"rank": 1
},
{
"id": 4341,
"rank": 1
}
],
"id": 34787716,
"name": "Support",
"current": false
},
{
"masteries": [
{
"id": 4211,
"rank": 2
},
{
"id": 4214,
"rank": 2
},
{
"id": 4124,
"rank": 1
},
{
"id": 4114,
"rank": 1
},
{
"id": 4112,
"rank": 4
},
{
"id": 4222,
"rank": 3
},
{
"id": 4113,
"rank": 4
},
{
"id": 4122,
"rank": 3
},
{
"id": 4152,
"rank": 3
},
{
"id": 4224,
"rank": 1
},
{
"id": 4132,
"rank": 1
},
{
"id": 4142,
"rank": 3
},
{
"id": 4232,
"rank": 1
},
{
"id": 4162,
"rank": 1
}
],
"id": 34787717,
"name": "AD Jungle",
"current": false
},
{
"masteries": [
{
"id": 4212,
"rank": 2
},
{
"id": 4211,
"rank": 2
},
{
"id": 4121,
"rank": 1
},
{
"id": 4134,
"rank": 3
},
{
"id": 4124,
"rank": 1
},
{
"id": 4114,
"rank": 1
},
{
"id": 4222,
"rank": 3
},
{
"id": 4112,
"rank": 4
},
{
"id": 4221,
"rank": 1
},
{
"id": 4122,
"rank": 3
},
{
"id": 4152,
"rank": 3
},
{
"id": 4141,
"rank": 1
},
{
"id": 4142,
"rank": 1
},
{
"id": 4132,
"rank": 1
},
{
"id": 4232,
"rank": 1
},
{
"id": 4162,
"rank": 1
},
{
"id": 4131,
"rank": 1
}
],
"id": 34787718,
"name": "ADC",
"current": false
},
],
"summonerId": 23591778
}}
更新:由於您更新了更多信息,所以這是我的新答案。
您沒有JSON數組的JSON數組,但是有JSON對象的數組。 這些對象又具有一個屬性,即地圖(我相信),但這並不重要。 您正在嘗試使用2D數組而非對象的1D數組。
創建一個代表您的對象的類:
public class MasteryPage {
private long id;
private String name;
private boolean current;
private Map<Long,Integer> masteries = new HashMap<>();
public MasteryPage(long id, String name, boolean current) {
this.id = id;
this.name = name;
this.current = current;
}
public void addMastery(long id, int rank) {
masteries.put(id, rank);
}
// add getters/setters...
}
然后使用您的類創建數組:
JSONArray jArray = json.getJSONArray("pages");
MasteryPage[] arr = new MasteryPage[jArray.length()];
for (int i = 0; i < jArray.length(); i++) {
JSONObject jsonMasteryPage = jArray.getJSONObject(i);
long id = jsonMasteryPage.getLong("id");
String name = jsonMasteryPage.getString("name");
boolean current = jsonMasteryPage.getBoolean("current");
MasteryPage page = new MasteryPage(id, name, current);
JSONArray jsonMasteries = jsonMasteryPage.getJSONArray("masteries");
for (int j = 0; j < jsonMasteries.length(); j++) {
JSONObject jsonMastery = jsonMasteries.getJSONObject(i);
page.addMastery(jsonMastery.getLong("id"), jsonMastery.getInt("rank"));
}
arr.add(page);
}
然后,您可以創建每個精通頁面並解析JSON以填充其字段。
像這樣聲明:
String[][] arr = new String[][numRows];
然后通過以下兩種方式向其添加數組:
arr[0] = new String[lengthOfJSONArray];
arr[0] = getStringArray();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.