2016-04-25 13 views
0

JSONObjectのいずれかの要素にアクセスしようとしています。私は json-simple-1.1.1.jarを使用しています。私はあなたがコードで見るように、最初の "コース"にアクセスすることができます。問題は、 "CourseNo"や "SubjectName"のような要素にアクセスできないことです。なぜJSONObject.get( "name")がnullを返すのですか?

マイ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. 

これはもちろん配列のちょうど最初の要素である(もちろん、[0])。

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を返します:私は私の単純なコードです。ここ...それはCourseNoような要素だ

それを達することはできませんが。 boolean containsはtrueにする必要がありますが、そうではありません。

マイ出力:助けを

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

ありがとう!

+0

最初のビットの固定インデントに注意してください。名前を取得するには、 'decoded_json [0] .course.instructors [0] .name'です。 –

+0

JSONには、オブジェクトの配列があります。これらの各オブジェクトにはCourseオブジェクトがあり、各コースオブジェクトには必要なプロパティがあります。したがって、配列内の各オブジェクトをループし、コースオブジェクトを取得し、次に必要なプロパティを取得します。最初のコースの出力を見てください。コースオブジェクトが含まれていることがわかりますので、1つ上のレベルに進む必要があります。 – ManoDestra

答えて

0

JSONのCourseオブジェクトでget()と電話する必要があります。あなたの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 
    } 
} 

これらのタイプのシナリオでは、デバッガをうまく使用すれば、問題を把握するのに役立つはずです。

0

Courseキーを使用してアクセスしたJSONObjectは、CourseNoにアクセスする前にドリルインする必要があります。

関連する問題