【问题标题】:Parse Json Array java解析 Json 数组 java
【发布时间】:2021-06-15 07:40:20
【问题描述】:

我尝试用这样的文件格式解析 JSON 数组

> [
  {
    "Absensi": 20,
    "Tunjangan Makan": 400000,
    "name": "asdasd",
    "ID": 1,
    "Gaji Total": 5400000,
    "Gaji Pokok": 5000000,
    "email": [
      "asdasd",
      "asdas"
    ]
  },
  {
    "Absensi": 20,
    "Tunjangan Makan": 400000,
    "name": "jasnen",
    "ID": 2,
    "Gaji Total": 5400000,
    "Gaji Pokok": 5000000,
    "email": [
      "asdasd",
      "asdasda"
    ]
  }
]

这是我的代码:

public static void readJsonFileManager(String file) throws ParseException, FileNotFoundException, IOException{
    JSONParser parser = new JSONParser();
    Reader reader = new FileReader(file);

    Object jsonObj ;
    jsonObj =   parser.parse(reader);

    JSONObject jsonObject = (JSONObject) jsonObj;
    while(jsonObj != null) {
        long ID = (long) jsonObject.get("ID");
        System.out.println("ID = " + ID);
        String name = (String) jsonObject.get("name");
        System.out.println("Name = " + name);
        long Absensi = (long) jsonObject.get("Absensi");
        System.out.println("Absensi = " + Absensi);
        long GajiPokok = (long) jsonObject.get("Gaji Pokok");
        System.out.println("GajiPokok = " + GajiPokok);
        long GajiTotal = (long) jsonObject.get("Gaji Total");
        System.out.println("GajiTotal = " + GajiTotal);
        long Tunjangan = (long) jsonObject.get("Tunjangan Makan");
        System.out.println("Tunjangan Makan= " + Tunjangan + "\n");
        jsonObj =   parser.parse(reader);
    }

但是当我运行它时,它会在我的终端上显示错误括号 我的代码有问题吗,我找不到任何与我的问题相关的帖子??

Exception in thread "main" java.lang.ClassCastException: class org.json.simple.JSONArray cannot be cast to class org.json.simple.JSONObject (org.json.simple.JSONArray and org.json.simple.JSONObject are in unnamed module of loader 'app')
at com.company.DemoKerja.readJsonFileManager(DemoKerja.java:230)
at com.company.DemoKerja.main(DemoKerja.java:71)

【问题讨论】:

  • 该方法似乎无法读取并打印出数据,因为它在JSON文件中有多个数据...
  • > 真的是 JSON 的一部分吗?因为那不是有效的格式。如果不是,那么您的 JSON 的顶级元素是一个数组,而不是一个对象,因此您需要遍历它的成员,而不是重复调用 parse
  • @Jansen Stanlie 会不会是 JSONObject 匹配 {} 而不是 []? - 你可以尝试迭代 JSONArray 吗?
  • 是的,我正在使用简单的 json

标签: java json json-simple


【解决方案1】:

不要将其放入JSONObject,而是将其解析为JSONArray

JSONArray array = new JSONArray(jsonObject);

while (array.hasNext()) {
    JSONObject obj = array.next();
    System.out.println(obj.get("ID"));
}

【讨论】:

  • 当我放 array.hasNext 时我的 intellij 显示问题
  • 'org.json.simple.JSONArray' 中的'JSONArray()' 不能应用于'(java.lang.Object)'
  • @JansenStanlie 你需要在构造函数中提供 JSONObject,而不是 Object
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2014-08-05
  • 2021-03-09
相关资源
最近更新 更多