使用Simple JSON Jar从数组中读取JSON对象

时间:2015-06-30 20:46:00

标签: java json

我有一个JSON文件,如下所示

{
    "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" 
    }
    ]
}

我正在尝试访问ClassId = 1的所有项目的ItemIds。我能够打印完整的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 个答案:

答案 0 :(得分: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()来获取所需的数据。但是如果你使用的是org.json.JSONArray,请使用JSONArray.length()。