【问题标题】:Load data from JSON file generated by Tiled using org.json.simple使用 org.json.simple 从 Tiled 生成的 JSON 文件加载数据
【发布时间】:2019-03-18 17:30:35
【问题描述】:

这里是新手... 我需要单独处理这个 JSON 文件中的以下两个“数据”数组,以便可以将它们保存在不同的 int 数组中:

{ 
//other stuff ...
"layers":[
{"data":[1, 1, 1, 1, 5, 1, 1, 1...],
//other stuff ...
}, 
{"data":[1, 1, 1, 1, 5, 1, 1, 1...],
//other stuff...
}
],
//other stuff...
}

这就是我到目前为止的代码:

@SuppressWarnings("unchecked")
    private void loadJsonData() {
        JSONParser parser = new JSONParser();
        try {
            Object obj = parser.parse(new FileReader(path));
            String jsonStr = obj.toString();
            JSONObject json = (JSONObject) JSONValue.parse(jsonStr);

          //other code...

          mapTiles = ...;
          objectTiles = ...;

        } catch (ParseException ex) {
            ex.printStackTrace();
        } catch (FileNotFoundException ex) {
            ex.printStackTrace();
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (ClassCastException ex) {
            ex.printStackTrace();
        }
    }

我确定答案就在这里,但我太无能了,无法找到它:D

【问题讨论】:

    标签: java json tiled


    【解决方案1】:

    有大量资源,json org 库易于使用。

    你可以在这里找到更多EXAMPLES

        JSONParser parser = new JSONParser();
        Object parsedObject = parser.parse(jsonStr);
    
        JSONObject jsonObject = (JSONObject) parsedObject;
        JSONArray layers = (JSONArray) jsonObject.get("layers"); 
    
        JSONObject data = (JSONObject) layers.get(0);   
        JSONArray mapData = (JSONArray) data.get("data");   
        int[] mapTile = new int[mapData.size()];
        for (int i = 0; i < mapData.size(); i++) {
            mapTile[i] = ((Long)mapData.get(i)).intValue();
        }
    
        data = (JSONObject) layers.get(1);  
        JSONArray objectData = (JSONArray) data.get("data");    
        int[] objectTile = new int[objectData.size()];
        for (int i = 0; i < objectData.size(); i++) {
            objectTile[i] = ((Long)objectData.get(i)).intValue();
        }
    
        System.out.println(Arrays.toString(mapTile));
        System.out.println(Arrays.toString(objectTile));
    

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 2021-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多