2015-06-30 3 views
1

У меня есть JSON-файл, как показано нижечтения JSON объект из массива с помощью Simple JSON Jar

{ 
    "ClassId": "1", 
    "ClassName": "mobiles", 
    "ClassItems": [ 
    { 
     "ItemId": "1", 
     "ItemName": "Nokia", 
     "ItemImageName": "nokia.jpg", 
     "ItemUnitPrice": "200.00", 
     "ItemDiscountPercent": "0" 
    }, 
    { 
     "ItemId": "2", 
     "ItemName": "Samsung", 
     "ItemImageName": "samsung.jpg", 
     "ItemUnitPrice": "400.00", 
     "ItemDiscountPercent": "0" 
    } 
    ] 
} 

Я пытаюсь получить доступ к ItemIds для всех элементов с Classid = 1. Я могу напечатать полный массив json, но я не могу найти print itemIds самостоятельно.

код Java я использую ниже:

public class JSONExample { 

    /** 
    * @param args the command line arguments 
    * @throws java.io.IOException 
    */ 
    public static void main(String[] args) throws IOException { 
     JSONParser parser=new JSONParser(); 
     try { 
      Object obj=parser.parse(new FileReader("JSON/TestJson.json")); 
      JSONObject jsonObject=(JSONObject) obj; 

      String classId=(String) jsonObject.get("ClassId"); 
      String className=(String) jsonObject.get("ClassName"); 
      if(classId.equals("1")){     

       JSONArray itemList = (JSONArray) jsonObject.get("ClassItems"); 

       Iterator iterator=itemList.iterator(); 

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

       } 
      } 

     } catch (FileNotFoundException ex) { 
      Logger.getLogger(JSONExample.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (ParseException ex) { 
      Logger.getLogger(JSONExample.class.getName()).log(Level.SEVERE, null, ex); 
     } 
    } 
} 

ответ

1
String itemId; 
for (int i = 0; i < itemList.length(); i++) { 
     JSONObject obj= itemList.getJSONObject(i); 
     itemId=(String) jsonObject.get("ItemId"); 
} 

Попробуйте выше вместо итератора. Примечание: если вы используете (импортируете) org.json.simple.JSONArray, вы должны использовать JSONArray.size() для получения требуемых данных. Но используйте JSONArray.length(), если вы используете org.json.JSONArray.

+0

Я пробовал, как вы упомянули, но получил следующие ошибки: error: не удалось найти символ {System.out.println (itemList.length()); symbol: method length() местоположение: переменная itemList типа JSONArray и ошибка: не удается найти символ JSONObject obj1 = itemList.getJSONObject (i); symbol: метод getJSONObject (int) местоположение: переменная itemList типа JSONArray – Sudershan

+0

Вам просто не нужно копировать весь код, а вместо этого использовать его как refrence. Я мог бы использовать еще один json api. Но вы также можете найти аналогичный метод в своем api. Просто вы можете получить свою логику сверху. –

+0

ОК, но я не смог найти метод length() для массива – Sudershan

Смежные вопросы