尝试使用以下java代码读取JSON文件

时间:2016-12-10 12:32:03

标签: java json

下面的代码不能正常工作请告诉我什么是错的,当我运行它时我得到一个空指针异常:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

public class WeatherAttribParser {



public static void main(String[] args) {

    JSONParser parser = new JSONParser();
    try{
    Object obj = parser.parse(new FileReader("D:/New folder/Severe Weather Assignment/accuweather_2016-03-24-120000.00.json"));
JSONObject jsonobj = (JSONObject) obj;
JSONObject newjsobj = (JSONObject) jsonobj.get("attributes");
String MaxColdRiskLev = (String) newjsobj.get("MaxColdRiskLev");
System.out.println(MaxColdRiskLev);


}catch (Exception ex) {

    ex.printStackTrace();

}
}

}

以下是JSON文件:

  {
"attributes": {

"MaxColdRiskLev": 0,

 }
 }

以下是不同类别的制定者和吸气者:

public class JsonAttributes {
    private int MaxColdRiskLev;
    public int getMaxColdRiskLev ()
    {
        return MaxColdRiskLev;
    }

    public void setMaxColdRiskLev (int MaxColdRiskLev)
    {
        this.MaxColdRiskLev = MaxColdRiskLev;
    }

    }

打印变量名时,我得到null。我在这里失踪的是什么?请告诉我。

2 个答案:

答案 0 :(得分:1)

这对我有用:

Object obj = parser.parse(new FileReader("D:/New folder/Severe Weather Assignment/accuweather_2016-03-24-120000.00.json"));
JSONObject jsonobj = (JSONObject) obj;
JSONObject newjsobj = (JSONObject) jsonobj.get("attributes");
String MaxColdRiskLev = (String) newjsobj.get("MaxColdRiskLev");

主要问题是jsonobj.get()仅适用于顶级元素,但在您的情况下,“MaxColdRiskLev”是“属性”的子级,因此您需要创建一个中级JSONObject

答案 1 :(得分:0)

问题在于你的json格式。字符串MaxColdRiskLev位于attributes

首先,您必须在attributes中获取嵌套对象,然后检索值MaxColdRiskLev

将您的代码修改为类似的内容:

public static void main(String[] args) {

    JSONParser parser = new JSONParser();
    try{
        Object obj = parser.parse(new FileReader("D:/New folder/Severe Weather Assignment/accuweather_2016-03-24-120000.00.json"));
        JSONObject jObj = new JSONObject(jsonobj.getString("attributes"));
        String MaxColdRiskLev = (String) jObj.get("MaxColdRiskLev");
        System.out.println( MaxColdRiskLev);

} catch (Exception ex) {

    ex.printStackTrace();

}