解析Json并构造一个数组

时间:2014-11-26 15:08:35

标签: java arrays 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 个答案:

答案 0 :(得分:4)

使用Integer.parseInt(String s)

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

答案 1 :(得分:1)

将程序从Integer更改为String并尝试:

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包含[265,141,148]。

修改

对于原始数组,您可以这样做:

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]的基本数组。