JSONObject到JSONObject类强制转换异常

时间:2017-06-19 07:06:56

标签: java arrays json

我正在尝试解析我的JSONObject以获取我的JSON数据的数据。

但问题是JSONParser是org.json.simple.JSONParser中的一个类,而JSONObject是org.json.JSONObject。

我在org.json中找不到任何解析器来避免类强制转换异常!

我们还有其他办法让这些东西排序......?

或者我是否朝着完全错误的方向前进? 请建议

我的JSON看起来像:

{
 "dataIntents": [
 {
  "intent": "muster.policy.daily",
  "expr": "Am I supposed to register my attendance daily?"
 },
 {
  "intent": "leave.probation",
  "expr": "An employee is eligible for how many leaves in 1st year ??"
 },
 {
  "intent": " leave.resigned ",
  "expr": "Are resigned employees eligible for pro rata leave credit"
 },
 {
  "intent": " muster.deadline.submission ",
  "expr": "By when should I get my pending leave/Emuster applications 
 approved?"
  }
 ]
}

我的主要课程:

public class DLMain {

public static void main(String[] args) {

try {
        JSONParser parser = new JSONParser();
        Object obj = 
        parser.parse(newFileReader("/home/cmss/Downloads/data.json"));
        org.json.JSONObject dataObject = (org.json.JSONObject)obj;
        System.out.println(dataObject);
        org.json.JSONArray getArray = 
        dataObject.getJSONArray("dataIntents");

        for (int i = 0; i < getArray.length(); i++) {
            org.json.JSONObject objects = getArray.getJSONObject(i);
            String a = objects.getString("expr");
        }
        System.out.println();
    } catch (Exception e) {
        System.out.println(e);
    }
  }
}

我希望我的“expr”键的所有值都放在JSONObject或String中。

提前帮助表示赞赏:)

1 个答案:

答案 0 :(得分:1)

为什么不为此使用POJO?

到目前为止,你的Json是一个意图列表,你可以有类似的东西:

public class Intents {
    private List<Intent> dataIntents;
}

和另一个

public class Intent {
    private String intent;
    private String expr;
}

(请生成构造函数和getter setter)

然后你可以直接使用ObjectMapper并避免所有丑陋的JSON解析。

希望它有所帮助!