使用Servlet中的JSONArray获取getParameter()中的每个项目

时间:2014-07-30 17:26:15

标签: java json servlets

String str = request.getParameter("dat");

我如何遍历我的数组,它看起来像这样:

[{"orange":["1.00","5"]},{"apple":["2.00","5"]}]

我想要第1项和第2项......

on first loop

 setName(get(i))//orange
  setValueget(i))//1.00
  setStock(get(i))//5   

因为我希望它传递给Type Fruit的另一个对象类(java类)。

类Fruit包含

setName(arg);
setValue(arg);
setstock(arg);

有人可以将我重定向到解决方案吗?

2 个答案:

答案 0 :(得分:1)

This是我使用的jar文件。

JSONArray array = new JSONArray(jsonString);
for(int i=0;i<array.length();i++){
    JSONObject object = array.getJSONObject(i);
    Iterator<String> keys = object.keys();
    String fruit = keys.next(); //Here you can get "orange" or "apple"
    System.out.println("The current fruit is "+fruit);
    setName(name);//setName here
    JSONArray fruitArray = object.getJSONArray(fruit); // I assume that you only have one json array in Each object.
    for(int j=0;j<fruitArray.length();j++){
        String numberString = fruitArray.getString(j);
        if(j==0){
            setValueget(numberString);// setValueget here
        }else{
            setStock(numberString);// setStock here
        }
        System.out.println(numberString);
    }
} 

使用你的json字符串,我得到了结果:

The current fruit is orange 1.00 5 The current fruit is apple 2.00 5

答案 1 :(得分:1)

Hi Niang尝试使用此代码从json获取数据,然后在运行之前下载此JSONArray类的jar文件

http://www.java2s.com/Code/Jar/j/Downloadjsonlibjar.htm

try{
        String str = request.getParameter("dat");
        JSONArray array = JSONArray.fromObject(str);
        for(int i=0;i<array.size();i++){
            JSONObject object = array.getJSONObject(i);
            Iterator<String> keys = object.keys();
            JSONArray fruitArray = object.getJSONArray(keys.next()); 
            String numberString=null;
            for(int j=0;j<fruitArray.size();j++){
                numberString= fruitArray.get(j).toString();
                out.println(numberString);
            }
        }
    }catch(JSONException jex){
        jex.printStackTrace();
    }catch(Exception ex){
        ex.printStackTrace();
    }