有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java解析Json并构造一个数组

我正在解析一个JSON,如下所示

[
    {
        "vendor_itms_arr": [
            "265",
            "141",
            "148"
        ]
    }
]

这是我的节目

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;


public class MrTest {

    public static void main(String args[]) throws JSONException
    {
        String json = "[\r\n" + 
                "    {\r\n" + 
                "        \"vendor_itms_arr\": [\r\n" + 
                "            \"265\",\r\n" + 
                "            \"141\",\r\n" + 
                "            \"148\"\r\n" + 
                "        ]\r\n" + 
                "    }\r\n" + 
                "]";

        JSONArray array = new JSONArray(json);
        ArrayList<Integer> vendor_itms_arr = new ArrayList<Integer>();
        for(int i=0;i<array.length();i++)
        {
             JSONObject jb1 = array.getJSONObject(i);
             JSONArray jr1 = jb1.getJSONArray("vendor_itms_arr");
            if (jr1 != null) { 
                   int len = jr1.length();
                   for (int k=0;i<len;i++){ 
                       int val = (Integer) jr1.get(k);
                       vendor_itms_arr.add(val);
                   } 
                } 
        }
        System.out.println(vendor_itms_arr);
    }
}

我越来越

Exception in thread "main" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at MrTest.main(MrTest.java:36)

你能告诉我如何构造一个数组吗

 int constructed_array[] = { 265 , 141 , 148};

共 (2) 个答案

  1. # 1 楼答案

    将程序从整数更改为字符串,然后尝试以下操作:

    String constructed_array[] = { "265", "141", "148" };
    List<Integer> myNewList = new ArrayList<Integer>(constructed_array.length);
    for (String str : constructed_array) {
        myNewList.add(Integer.parseInt(str));
    }
    

    现在,对象myNewList包含[265141148]

    编辑

    对于基元数组,可以执行以下操作:

    String constructed_array[] = { "265", "141", "148" };
    int[] myPrimitiveArray = new int[constructed_array.length];
    for (int i = 0; i < constructed_array.length; i++) {
        myPrimitiveArray[i] = Integer.parseInt(constructed_array[i]);
    }
    

    myPrimitiveArray是一个包含[265、141、148]的基元数组

  2. # 2 楼答案

    使用^{}

    int val = Integer.parseInt(jr1.get(k));