如何在Java中从文件中读取JSON - json.simple

时间:2017-08-17 09:29:17

标签: java json

我在阅读Java中的Json文件时遇到了麻烦。

这是一个包含以下格式内容的Json文件:

{ 
"id": "10",
    "groups": [{
        "name": "text",
        "questions": [{
            "value": "text"
            "response": {

            }
        }
    ]}
]}

我在Java中做过的事情:

 JSONParser parser = new JSONParser();
 Object obj = parser.parse(new FileReader("/test.json"));
 JSONObject j = (JSONObject) obj;
 System.out.println(j);
 String id = (String)j.get("id");
 int idpart = Integer.parseInt(id);
 System.out.println("id  :" + idpart);        


 JSONArray lg = (JSONArray) j.get("groups");
 Iterator i = lg.iterator();
 while (i.hasNext()) {
     JSONObject gobj = (JSONObject) i.next();
     String name = (String)gobj.get("name");
     System.out.println(name);

     /** The problem start from here !**/
     JSONArray lq = (JSONArray) j.get("questions");
     Iterator it = lq.iterator();
     while (it.hasNext()) {
         JSONObject qobj = (JSONObject) i.next();
         String idQuestion = (String)qobj.get("id");
         System.out.println(idQuestion);
         //How to get responses ?
     }
 }

我的问题是如何从问题列表中获取响应对象?

当我试图得到像这样的对象的问题列表时:

JSONArray lq = (JSONArray) j.get("questions");
Iterator it = lq.iterator();
while (it.hasNext()) {
    JSONObject qobj = (JSONObject) i.next();
    String idQuestion = (String)qobj.get("id");
    System.out.println(idQuestion);
}

它显示错误:Null pointer
有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您必须从lg而不是j收到问题 您正在使用Iterator,将组对象分配到gobj,因此请使用它:

JSONArray lq = (JSONArray) gobj.get("questions");