2016-04-25 11 views
0

Ich versuche auf ein Element in einem meiner JSONObject zuzugreifen. Ich verwende json-einfach-1.1.1.jar. Ich kann auf den ersten "Kurs" zugreifen, wie Sie im Code sehen. Das Problem ist, ich kann nicht auf die Elemente wie "CourseNo" oder "SubjectName" zugreifen.Warum gibt JSONObject.get ("name") null zurück?

Meine JSON-Daten sind:

[ 
    { 
     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. 

Dies ist nur das erste Element natürlich Array (Kurs [0]). Ich kann es erreichen, aber nicht ist es Elemente wie CourseNo ..

Hier mein einfacher Code ist:

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 

    } 
} 

Also, normalerweise String courseNo sollte gleich „201“, aber es gibt null zurück. Und Boolean enthält sollte wahr sein, aber es ist nicht.

Meine Ausgabe:

{"Course":{"Instructors":[{"IsPrimary":true,"Surname":"ÖZKAYA","Name":"AYLİN 
SUNA"}],"SubjectName":"ACCT","Schedule": .... (it goes.. this is true) 
null 
false 

Dank für die Hilfe!

+0

Beachten Sie die feste Einrückung im ersten Bit. Um auf name zu bekommen, ist es 'decoded_json [0] .course.instructors [0] .name' –

+0

In Ihrem JSON haben Sie ein Array von Objekten. Jedes dieser Objekte enthält ein Kursobjekt, und jedes Kursobjekt verfügt über die gewünschte Eigenschaft. Durchlaufen Sie also alle Objekte im Array, rufen Sie das Kursobjekt und dann die gewünschte Eigenschaft ab. Schauen Sie sich die Ausgabe des ersten Kurses an. Sie können sehen, dass es ein Kursobjekt enthält, also müssen Sie eine Ebene tiefer gehen. – ManoDestra

Antwort

0

Sie müssen einfach get() auf dem Course Objekt in Ihrem JSON aufrufen. Schau dir deinen JSON sorgfältig an und du wirst sehen, was ich meine.

Beachten Sie, dass eine gute Verwendung Ihres Debuggers in dieser Art von Szenarien Ihnen helfen sollte, das Problem zu lösen.

0

Sie haben einen zusätzlichen JSONObject Zugriff über den Schlüssel Course, den Sie bohren müssen, bevor Sie CourseNo erreichen können.

Verwandte Themen