2016-03-24 15 views
0

次のJSONファイルをjavaに読み込もうとしています。JSONシンプルライブラリを使用してjsonファイルを読み取る際にエラーが発生しました

import org.json.simple.JSONArray; 
import org.json.simple.JSONObject; 
import org.json.simple.parser.JSONParser; 


public class ReadFile { 


    @SuppressWarnings("unchecked") 
    public static void main(String[] args) { 
     JSONParser parser = new JSONParser(); 

     try { 

      Object obj = parser.parse(new FileReader(
        "D://data.json")); 

      JSONObject jsonObject = (JSONObject) obj; 


      JSONArray nameList = (JSONArray) jsonObject.get("names"); 


      System.out.println("\nnames:"); 
      Iterator<String> iterator = nameList.iterator(); 
      while (iterator.hasNext()) { 
       System.out.println(iterator.next()); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

私は配列を印刷したいが、私はエラー次取得しています:

ここ

は私のJSONファイル

{ 
     "names": [ 
     { 
      "no": 1, 
      "name": "John" 
     }, 
     { 
      "no": 2, 
      "name": "Paul" 
     } 
     ], 
     "new_names": [ 
     { 
      "no": 11, 
      "name": "John" 
     }, 
     { 
      "no": 12, 
      "name": "Paul" 
     } 
     ] 
    } 

Javaコードであります

とjava.lang.ClassCastException:org.json.simple.JSONObjectはReadFile.main(ReadFile.java:34)でjava.lang.Stringでの キャスト

答えて

0

例外トレースで述べたように

あなたはJSONObjectであなたのStringを置き換える実行する必要があります。

Iterator<String> iterator = nameList.iterator(); 

次の代わりに使用してみてください:あなたは、以下の変更する必要があり

.. JsonObjectから

arrLength = nameList.Length() 
for (int i = 0; i < arrLength; ++i) { 
    JSONObject jsonObj = nameList.getJSONObject(i); 
    System.out.println(jsonObj) 
} 
3

あなたJSonArray nameListが持っていることはできませんが、内部JSONObjectsを持っていません文字列、それが問題を引き起こしているこの行がある

Iterator<JSONObject > iterator = nameList.iterator(); 
      while (iterator.hasNext()) { 
       JSONObject jsonObjct= iterator.next() 
       System.out.println(jsonObjct.getInt("no")); 
       System.out.println(jsonObjct.getString("name")); 
      } 
+0

Not Working!まだ同じエラーが発生しています! –

+0

@Thanosあなたのjsonにはどのライブラリを使用していますか?私はJSonArrayのorg.jsonライブラリのイテレータを見つけられないので、あなたのJSONオブジェクトまたはJSonArrayのインポートをコメントできます。 – Pragnani

+0

IteratorはJSON配列で動作しませんね、私はforループを使用しました! –

1

Iteratoringを:

を次のように:

Iterator<JSONObject> iterator = nameList.iterator(); 

forループを使用して反復すると、IteratorはJSONArrayでは機能しません。

+1

はい、IteratorはJSON配列+1で動作しません –

関連する問題