java解析JOSN数据问题

像这种json数据怎么把里面的值取出来呢?

[{
    "cname": "小明",
        "age": 10

}, {
    "cname": "小黑",
        "age": 10
}]

想把名字提取到一个字符串数组里面,把年龄提取到int数组,怎么写?

可以使用fastjson的jsonArray来解析

JSONArray jsonArray = JSONArray.parseArray(jsonData);
        String[] names = new String[jsonArray.size()];
        int[] ages = new int[jsonArray.size()];
        for (int i = 0; i < jsonArray.size(); i++) {
            JSONObject object = jsonArray.getJSONObject(i);

            String cname = object.getString("cname");
            int age = object.getIntValue("age");
            names[i] = cname;
            ages[i] = age;
        }

img

  • 贴个示例【采用FastJson处理】:
@Test
    public void test() {

        String json = "[{\n" +
                "    \"cname\": \"小明\",\n" +
                "        \"age\": 10\n" +
                " \n" +
                "}, {\n" +
                "    \"cname\": \"小黑\",\n" +
                "        \"age\": 10\n" +
                "}]\n";
        List<Map<String, Object>> maps = FastJsonUtils.toMapList(json);
        List<String> nameList = new ArrayList<>();
        List<Integer> ageList = new ArrayList<>();
        for (Map<String, Object> map : maps) {
            nameList.add((String) map.get("cname"));
            ageList.add((Integer) map.get("age"));
        }
        String[] nameArr = nameList.toArray(new String[0]);
        Integer[] ageArr = ageList.toArray(new Integer[0]);

        System.out.println(Arrays.toString(nameArr));
        System.out.println(Arrays.toString(ageArr));
    }

可以使用JSONObject和JSONArray来解析JSON数据,然后将数据存储到字符串数组和整型数组中。示例代码如下:


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

public class JsonDemo {
    public static void main(String[] args) {
        String jsonStr = "[{\"cname\": \"小明\",\"age\": 10}, {\"cname\": \"小黑\",\"age\": 10}]";
        
        try {
            JSONArray jsonArray = new JSONArray(jsonStr);
            String[] names = new String[jsonArray.length()];
            int[] ages = new int[jsonArray.length()];
            
            for (int i = 0; i < jsonArray.length(); i++) {
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                names[i] = jsonObject.getString("cname");
                ages[i] = jsonObject.getInt("age");
            }
            
            // 打印结果
            System.out.println(Arrays.toString(names));
            System.out.println(Arrays.toString(ages));
        } catch (JSONException e) {
            e.printStackTrace();
        }
    }
}


首先使用JSONArray将JSON字符串解析成一个数组,然后定义两个数组names和ages来存储解析出来的姓名和年龄。接着,遍历JSONArray,使用JSONObject解析每一个对象,并将对应的姓名和年龄存储到数组中。最后,打印出两个数组中的内容。