2016-03-24 21 views
0

Aşağıdaki JSON dosyasını java'da okumaya çalışıyorum. Ben isimleri dizi yazdırmak istediğinizJSON Basit Kitaplığı'nı kullanarak json dosyasını okumada hata oluştu

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(); 
     } 
    } 
} 

ama hata aşağıdaki alıyorum: Burada

Dosya benim JSON

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

Java Kod olduğu

java.lang.ClassCastException: org.json.simple.JSONObject ReadFile.main (ReadFile.java:34) de java.lang.String için dökme

cevap

0

İstisna iz belirtildiği gibi

Sen JSONObject ile String yerini almadığını olmalıdır:

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

deneyin yerine aşağıdaki kullanarak: JSONObject nesnesi dan

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

Kişisel JSonArray nameList sahiptir olamaz, içeride JSONObjects vardır değil dizeleri, O soruna neden olan bu çizgidir

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

Çalışmıyor! hala aynı hatayı alıyorum! –

+0

@Thanos Json'unuz için hangi kütüphaneyi kullanıyorsunuz? JSONArray – Pragnani

+0

için org.json kitaplığında yineleyici bulamadığım için JSON nesnesinin veya JSonArray öğesinin içe aktarılmasını lütfen yorumlayabilirim. Iterator uygulamasının JSON Dizisi üzerinde çalışmayacağını tahmin ediyorum; –

1

Iteratoring ..

Yani aşağıda değişmelidir:

aşağıdaki:

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

Ve döngü için yineleyin, yineleyici JSONArray için çalışmayacak.

+1

Evet, yineleyici JSON dizisi +1 üzerinde çalışmaz –

İlgili konular