我有一个像下面的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));
    }
}


如何获得覆盖层的长度(此处为overlay1overlay2overlay3)?如何通过gson API查询3的长度?

我想知道字符串或数组中的overlay1,overlay2,overlay3,以便可以迭代它们。

注意:在这里,我必须迭代100次或任意次,以便以后在json文件中叠加层增加时可以进行迭代。它在循环中不必要地进行迭代。
我如何仅迭代overlay1overlay2overlay3从而没有不必要的迭代?
我的意思是我只想通过Gson在overlay1中获取overlay2overlay3jsonobjects等。

最佳答案

我已经使用下面的代码解决了这个问题。

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));
     }
 }

08-28 01:31