json解析

JSON
json有两种 表现形式:对象、数组
对象:{数据:值}
数组:[数据:数据]
在解析的时候,如果是花括号,则代表对象,解析的时候使用JSONObject。如果是中括号则代表是数组,解析的时候使用JSONArray。

/*String json = "{no:1,name:'android', employees:[{name:'zhangsan',age:20}, {name:'lisi',age:21},{name:'wangwu',age:22}]}";
        JSONObject j = new JSONObject(json);//最外层是花括号,所以使用JSONObject来解析
//解析最外层后,由于no和name都没有再被花括号或中括号包裹,所以可以直接获取no和name的值
        System.out.println("no:"+j.getInt("no"));
        System.out.println("name:"+j.getString("name"));
//由于数据enployees的值是一个数组,所以需要利用上一步获取的JSONObject来获取JSONArray,获取之后,数组中的对象则全部被保存到JSONAarray中了
        JSONArray ary = j.getJSONArray("employees");
//可以创建一个Person类,来保存每个对象的数值,也可以不用
        List<Person> list = new ArrayList<>();
//遍历获取数组中每个对象
        for(int i =0; i<ary.length(); i++){
            JSONObject obj = ary.getJSONObject(i);//由于数组中的是对象,所以需要用JSONObject来获取
            Person p = new Person();
            p.setName(obj.getString("name"));
            p.setAge(obj.getInt("age"));
            list.add(p);
        }
        for (Person person : list) {
            System.out.println(person);
        }*/
        String json = "[{name:'张三',scores:{en:90,math:99,cn:89}}, {name:'李四',scores:{en:80,math:90,cn:99}}]";
        JSONArray ary = new JSONArray(json);
        List<Student> list = new ArrayList<>();
        for (int i = 0; i <ary.length(); i++) {
            JSONObject obj = ary.getJSONObject(i);
            Student stu = new Student();
            stu.setName(obj.getString("name"));
            JSONObject obj1 = obj.getJSONObject("scores");
            stu.setEn(obj1.getInt("en"));
            stu.setMath(obj1.getInt("math"));
            stu.setCn(obj1.getInt("cn"));
            list.add(stu);
        }
        for (Student student : list) {
            System.out.println(student);
        }

你可能感兴趣的:(json解析)