无法从JSON文件加载值

时间:2015-01-09 18:55:27

标签: java json

所以,我正在尝试从JSON文件中加载一些值:

{
Float :
null
,
test :
"hello"
,
Int :
2

}

但是,我在下面的方法根本不起作用,并且不加载文件内容。当我尝试使用返回从文件加载的值的各种方法时,除NPE之外不会抛出任何错误。知道我做错了吗?

protected void load(String name, String path) throws FileAlreadyLoadedException{
    if (get(name) == null){
        final ThunderFile tf = new ThunderFile(name, path);
        //files.add(tf);
        try {
            final JSONObject jobj = (JSONObject)new JSONParser().parse(new FileReader(path + File.separator + name + ".json"));
            new Thread(){
                public void run(){
                    Iterator<?> i = jobj.keySet().iterator();
                    while(i.hasNext()){
                        String key = (String) i.next();
                        Object value = jobj.get(key);
                        if (!key.equals("") && !value.equals("")){
                            tf.set(key, value);
                        }
                    }
                    files.add(tf);
                    System.out.println("[Thunderbolt 2] Loaded " + tf.getName() + ".json");
                    this.interrupt();       
                }
            }.start();  
        } catch(IOException | ParseException e) {
            e.printStackTrace();
        }   
    }else{
        throw new FileAlreadyLoadedException("The File " + name + ".json is already loaded!");
    }
}

编辑: 为了澄清,即使我的文件看起来像这样,也不会加载任何值:

{"Double":2.0}

1 个答案:

答案 0 :(得分:0)

您的JSON包含Float: null,因此密钥Object value = jobj.get(key); Floatnull

因此!value.equals("")会抛出NPE。