我有一个像下面的json文件,想解析overlay1,overlay2,overlay3
这样的叠加层:
{
"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在
overlay1
中获取overlay2
,overlay3
,jsonobjects
等。 最佳答案
我已经使用下面的代码解决了这个问题。
Gson gson = new GsonBuilder().create();
JsonObject job = gson.fromJson(fileReader, JsonObject.class);
JsonObject ovl = job.getAsJsonObject("overlays");
Map<String, Object> data = new Gson().fromJson(ovl, type);
Iterator<String> entries = data.keySet().iterator();
while (entries.hasNext())
{ JsonObject overlay = ovl.getAsJsonObject(entries.next().toString());
if (overlay != null)
{
osb.setOverlay(jsp.getOverlay(overlay));
}
}