Java 表达式的类型必须是数组类型,但已解析为JSONArray

Java 表达式的类型必须是数组类型,但已解析为JSONArray,java,json,servlets,Java,Json,Servlets,我得到一个JSON对象,然后将其转换为数组并尝试访问属性或值,但得到的错误是表达式的类型必须是数组类型,但它解析为JSONArray 我必须将JSON数据保存到我的数据库中,这就是我获取数组中所有值的原因 我的代码 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { Scanner sc

我得到一个JSON对象,然后将其转换为数组并尝试访问属性或值,但得到的错误是
表达式的类型必须是数组类型,但它解析为JSONArray

我必须将JSON数据保存到我的数据库中,这就是我获取数组中所有值的原因

我的代码

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    Scanner scanner = new Scanner(request.getInputStream());
    String imageData = scanner.nextLine();
    System.out.println(imageData);
    JSONObject jsonObj = new JSONObject(imageData);
    JSONArray jsonArray = jsonObj.getJSONArray("ImageData");

    JSONObject innerObj = new JSONObject(jsonArray[0]); // this one is throwing error 
    // eror is `The type of the expression must be an array type but it resolved to JSONArray`
    String counter = innerObj.getString("Counter");
    String name = innerObj.getString("Name");
    String isActive = innerObj.getString("IsActive");     
    System.out.println(counter);

}

System.out.println(imageData); it prints -->
{“ImageData”:[{“Counter”:“Counter A”,“Name”:“CountA1.jpg”,“IsActive”:“Y”},{“Counter”:“Counter A”,“Name”:“CountA2.jpg”,“IsActive”:“Y”}

System.out.println(jsonArray);这个打印-->

[{“计数器”:“计数器A”,“IsActive”:“Y”,“名称”:“CountA1.jpg”},{“计数器A”,“IsActive”:“Y”,“名称”:“CountA2.jpg”}]

我已经在代码中注释了我得到错误的那一行

使用方法

如果索引存在并且是JSONObject,则返回索引处的值


不能像JSONArray[0]那样将方括号添加到JSONArray,必须使用JSONArray.getJSONObject(“index”)

这起作用了,但是
字符串计数器=innerObj.getString(“计数器”)仅给出计数器A我希望所有计数器A、计数器B和计数器C都是dynamic@viveksingh您可以在jsonArrayI Ma中循环执行(
for)(int i=0;i每次在这里打印计数器A时,都要打印3次计数器)A@viveksingh在循环中,您需要将
0
更改为
i
JSONObject innerObj=jsonArray.getJSONObject(i);
JSONObject innerObj =  jsonArray.getJSONObject(0);