我有一個JSON文件中像下面和需要解析的疊加像overlay1,overlay2,overlay3
內部的對象:解析JSON對象使用GSON並獲得長度
{
"overlays": {
"overlay1": {
"imagesFPS": 12,
"clickThrough": false,
"repeatCount": 0,
"sensitivity": 0.6,
},
"overlay2": {
"cgButtonPressedColor": "#ffaa56",
"relative": "screen",
"isOverlayRendered": true,
"cgBorderWidth": "0px",
},
"overlay3": {
"cgButtonPressedColor": "#007f00",
"text": "Goto Page3 on Touch 5 Release",
}
}
}
目前,我這樣做:
Gson gson = new GsonBuilder().create();
JsonObject job = gson.fromJson(fileReader, JsonObject.class);
JsonObject ovl = job.getAsJsonObject("overlays");
for (int i = 1; i <= 100; i++) {
JsonObject overlay = ovl.getAsJsonObject("overlay" + i);
if (overlay != null) {
osb.setOverlay(jsp.getOverlay(overlay));
}
}
我怎樣才能得到覆蓋層的長度(這裏:overlay1
,overlay2
,overlay3
)?如何通過gson API查詢3
的長度?
我想知道overlay1,overlay2,overlay3
在一個字符串或數組,以便我可以遍歷它們。
注意:在這裏,我必須迭代100次或任何時間,以便迭代如果疊加層稍後在json文件中增加。它在循環中進行不必要的迭代。
如何迭代只有overlay1
或overlay2
或overlay3
等沒有不必要的迭代?
我的意思是我只想通過Gson在jsonobjects
中獲得overlay1
,overlay2
,overlay3
等等。
感謝您的回覆。但如果我的JSON包含overlay4而不是覆蓋3,那麼這個代碼將無法工作..我需要的是獲得覆蓋名稱,如overlay1,overlay2等..實際上我已經使用列表來推動我的代碼內覆蓋但我需要名稱推動.. –
我已經通過以下 解決了此問題'Gson gson = new GsonBuilder()。create(); JsonObject job = gson.fromJson(fileReader,JsonObject.class); JsonObject ovl = job.getAsJsonObject(「overlays」)' Map data = new Gson()。fromJson(ovl,type); \t \t迭代器 entries = data.keySet()。iterator(); \t \t而(entries.hasNext()){ \t \t \t的JSONObject覆蓋= ovl.getAsJsonObject(entries.next()的toString()); \t \t \t如果(重疊!= NULL){ \t \t \t \t osb.setOverlay(jsp.getOverlay(覆蓋)); \t \t \t} \t \t}' –