我正在关注这个tutuorial here,我的JSON对象已经足够接近了,除了我有这种格式:
{"user":{
"SomeKeys":"SomeValues",
"SomeList":["val1","val2"]
}
}
以下是我的相关代码:
Object obj = parser.parse(new FileReader("exampleJson.json"));
JSONObject jsonObject = (JSONObject) obj;
JSONObject user = (JSONObject) jsonObject.get("user");
JSONArray list = (JSONArray) user.get("SomeList");
然后我的程序关闭,从键等获取值。或者它会,但我从eclipse得到NullPointerException
。 为什么会这样?
它应该将我的.json
文件解压缩到jsonObject
,将“user”密钥解压缩为JSONObject user
,然后将“SomeList”密钥解压缩为名为{{1}的JSONArray }。除非它这样做,否则必须尝试将list
或val1
中的一个放入不存在的JSONArray的一部分中,并指向val2
的深渊。 我做了什么值得这个错误?
如何修复程序?
答案 0 :(得分:1)
您的代码对我来说效果很好
public class App {
public static void main(final String[] args) throws FileNotFoundException, IOException, ParseException {
final Object obj = new JSONParser().parse(new FileReader("D:/a.json"));
final JSONObject jsonObject = (JSONObject) obj;
final JSONObject user = (JSONObject) jsonObject.get("user");
final JSONArray list = (JSONArray) user.get("SomeList");
System.out.println(list);
}
}
档案D:/exampleJson.json
{"user":{
"SomeKeys":"SomeValues",
"SomeList":["val1","val2"]
}
}
输出
["val1","val2"]
答案 1 :(得分:1)
使用完全相同的json文件:
{"user":{
"SomeKeys":"SomeValues",
"SomeList":["val1","val2"]
}
}
这是我使用的代码(使用导入来确保我们有相同的代码):
import java.io.FileReader;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
public class Test {
public static void main(String[] args) throws Exception {
Object obj = new JSONParser().parse(new FileReader("t.json"));
JSONObject jsonObject = (JSONObject) obj;
JSONObject user = (JSONObject) jsonObject.get("user");
JSONArray list = (JSONArray) user.get("SomeList");
System.out.println(list);
}
}
这是输出:
["val1","val2"]
我使用maven和m2e导入库。用于此测试的版本为json-simple-1.1.jar
。