2016-08-26 3 views
-2

一連の整数データを持つJSONファイルを読み込もうとしていますが、読み込み時にJSONObjectから変換できないことがわかりますJSONArrayorg.json.simple.JSONArrayをorg.json.simple.JSONObjectにキャストすることはできません

に JSONファイル構造の

一部は次のとおりです。

{ 
    "data": [ 
     [1, 1, 1, 1, 1, 1, 1, 1], 
     [1, 1, 0, 0, 0, 0, 1, 1], 
     [1, 1, 0, 0, 0, 0, 1, 1], 
     [0, 1, 1, 0, 0, 1, 1, 0], 
     [0, 1, 1, 1, 1, 1, 1, 0], 
     [0, 0, 1, 1, 1, 1, 0, 0], 
     [0, 0, 0, 0, 0, 0, 0, 0], 
     [0, 0, 0, 0, 0, 0, 0, 0] 
    ], 
    "time": 0.2 
}, 

コード:

public static void main(String[] args) throws InterruptedException { 

JSONParser parser = new JSONParser(); 


try { 

    Object obj = parser.parse(new FileReader("C:\\Carriots\\dos.json")); 

    JSONObject jsonObject = (JSONObject) obj; 


    // loop array 
    JSONArray tag = (JSONArray) jsonObject.get("data"); 


    Iterator iterator = tag.iterator(); 

    while (iterator.hasNext()) { 
    System.out.println(iterator.next()); 

} 
+2

。私はJSONを使いました。正確なスタックトレースはありますか? –

答えて

0

は試してみてください...

JSONArray tag = jsonObject.getJSONArray("data");

0

あなたObjectいないJSONArrayを返しますキーdata

JSONArray tag = (JSONArray) jsonObject.getJSONArray("data"); 

jsonObject.get()からJSONArrayを取得するために、以下の使用してみてください。

0
import java.io.FileReader; 

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

public class JSONTest { 

    public static void main(String[] args){ 


     try { 

      JSONParser parser = new JSONParser(); 

      Object obj = parser.parse(new FileReader("C:\\Carriots\\dos.json")); 

      JSONObject jsonObject = (JSONObject) obj; 

      JSONArray data = (JSONArray)jsonObject.get("data"); 

      for(Object o: data){ 
       System.out.println(o); 
      } 

     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 


} 

出力:

[1,1,1,1,1,1,1,1] 
[1,1,0,0,0,0,1,1] 
[1,1,0,0,0,0,1,1] 
[0,1,1,0,0,1,1,0] 
[0,1,1,1,1,1,1,0] 
[0,0,1,1,1,1,0,0] 
[0,0,0,0,0,0,0,0] 
[0,0,0,0,0,0,0,0] 
+0

エラーが続く、ライブラリorg.json.simple ...をorg.jsonに変更し、コンソールに私に同じエラーが表示されます.. – Bufank85

+0

@ Bufank85あなたがそれをやっているやり方に 'org.json'を使うことはできません。あなたのオブジェクトを 'org.json.simple'ライブラリを使用するために必要な配列にキャストする必要があります。私はあなたに何の問題も見ません。 – px06

+0

すべてのコードをコピーして、出力に同じjava.lang.ClassCastExceptionが表示され続けます。org.json.simple.JSONArrayをorg.json.simple.JSONObjectにキャストすることはできません \t(JSONTest.main(JSONTest.java:20) – Bufank85

0

あなたは、配列のデータを処理するためにイテレータを使用することができます。 JSONObjectをこれらの値のいずれかに変換する際にエラーが発生するため、StringまたはIntegerではなくObjectを使用してください。

package jsonProcessing; 

import java.io.FileReader; 
import java.util.Iterator; 

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

public class JsonNumReader { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 
    JSONParser parser = new JSONParser(); 

    try { 
     JSONObject jsonObject = (JSONObject) parser.parse(new FileReader("C:/JSON/numbers.json")); 

     JSONArray array = (JSONArray)jsonObject.get("data"); 

     Iterator<Object>iterator = array.iterator(); 
     while(iterator.hasNext()){ 
      System.out.println(iterator.next()); 
     } 
    } catch (Exception e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    } 
} 

出力:あなたのコードのプログラムのコンパイルと実行して

[1,1,1,1,1,1,1,1] 
[1,1,0,0,0,0,1,1] 
[1,1,0,0,0,0,1,1] 
[0,1,1,0,0,1,1,0] 
[0,1,1,1,1,1,1,0] 
[0,0,1,1,1,1,0,0] 
[0,0,0,0,0,0,0,0] 
[0,0,0,0,0,0,0,0] 
関連する問題