我正在尝试访问我的一个JSONObject中的元素。我在用 JSON-简单1.1.1.jar。我可以访问第一个"课程"就像你在代码中看到的那样。问题是,我无法访问" CourseNo"等元素。或" SubjectName"。
我的JSON数据是:
[
{
Course: {
SubjectName: "ACCT",
CourseNo: "201",
SectionNo: "A",
Instructors: [
{
Name: "AYLÄ°N SUNA",
Surname: "ÖZKAYA",
IsPrimary: true
}
],
Schedule: [
{
StartDate: "/Date(1347829200000)/",
FinishDate: "/Date(1356645600000)/",
MeetingTime: [
{
.... and it goes like that.
这只是课程数组的第一个元素(course [0])。我可以达到它但不是像CourseNo那样的元素。
这是我的简单代码:
public class CourseQuerySystem {
public static void main(String[] args) throws FileNotFoundException{
FileReader reader = new FileReader("CoursesOffered.json");
JSONArray courseData = (JSONArray)JSONValue.parse(reader);
JSONObject firstCourse = (JSONObject)courseData.get(0); // first course
System.out.println(firstCourse); // it works
String courseNo = (String) firstCourse.get("CourseNo");
System.out.println(courseNo); // returns NULL
boolean contains = firstCourse.containsKey("CourseNo");
System.out.println(contains); // returns false
}
}
所以,通常字符串courseNo应该等于" 201"但它返回null。 并且boolean contains应该是true,但它不是。
我的输出:
{"Course":{"Instructors":[{"IsPrimary":true,"Surname":"ÖZKAYA","Name":"AYLİN
SUNA"}],"SubjectName":"ACCT","Schedule": .... (it goes.. this is true)
null
false
感谢您的帮助!
答案 0 :(得分:1)
您只需要在JSON中的get()
对象上调用Course
即可。仔细看看你的JSON,你就会明白我的意思。
public class CourseQuerySystem {
public static void main(String[] args) throws FileNotFoundException{
FileReader reader = new FileReader("CoursesOffered.json");
JSONArray courseData = (JSONArray)JSONValue.parse(reader);
JSONObject firstCourse = (JSONObject)courseData.get(0); // first course
System.out.println(firstCourse); // it works
String courseNo = (String) firstCourse.get.get("Course").get("CourseNo");
System.out.println(courseNo); // Should work
}
}
请注意,在这些类型的场景中,充分利用调试器可以帮助您找出问题。
答案 1 :(得分:0)
您需要通过JSONObject
密钥访问额外的Course
,然后才能访问CourseNo
。