Json解析精讲

来源:互联网 发布:sql server创建表 编辑:程序博客网 时间:2024/05/18 06:51
json解析可分为三种形式
原生的解析
谷歌的 Gson
阿里巴巴的 fastjson


以{开头     首先创建对象
[        数组

{key:value,key2:vaule2...}
{key:value,key:{key:value....}}
{key:value,key:[{key:value...},{}...]}
[{key:value},{key:value}...]

原生的解析:
{} 创建jsonOBject 
[]jsonArray
通过object对象得到 getString("json中的key")
推荐将数据存储到对象中
1入门
2对象套对象
1
/**
2
 * 对象套这对象
3
 * {}
4
 * key:{}
5
 */
6
public class Test2 {
7
8
    public static void main(String[] args) throws JSONException {
9
        String json= "{person:{name:'tom',age:34}}";
10
        // 得到最外面的 对象
11
        JSONObject object = new JSONObject(json);
12
        // 根据perosn键得到后面的对象
13
        JSONObject object2 = object.getJSONObject("person");
14
        // 后面的对象得到 里面的value
15
        String name = object2.getString("name");
16
        int age= object2.getInt("age");
17
        System.out.println(name+""+age);
18
        
19
    }
20
}
3用集合和类对象返回
1
public class Dept {
2
3
    int no;
4
    String deptname;
5
    @Override
6
    public String toString() {
7
        return "Dept [no=" + no + ", deptname=" + deptname + "]";
8
    }
9
    public int getNo() {
10
        return no;
11
    }
12
    public void setNo(int no) {
13
        this.no = no;
14
    }
15
    public String getDeptname() {
16
        return deptname;
17
    }
18
    public void setDeptname(String deptname) {
19
        this.deptname = deptname;
20
    }
21
    
22
    
23
}
4一个大数组
1
public class Test4 {
2
3
    public static void main(String[] args) throws JSONException {
4
        String json = "[{name:'tom',age:24},{name:'cindy',age:24},{name:'mandy',age:27},{name:'jerry',age:30}]";
5
    
6
        JSONArray array = new JSONArray(json);
7
        
8
        List<Map<String, Object>> list = new ArrayList<>();
9
        List<Person> list2 = new ArrayList<>();
10
        
11
        for (int i = 0; i < array.length(); i++) {
12
            
13
            JSONObject object = array.getJSONObject(i);
14
            String name = object.getString("name");
15
            int age = object.getInt("age");
16
            // 以list集合套map集合形式装数据的
17
            Map<String, Object> map = new HashMap<>();
18
            map.put("name", name);
19
            map.put("age", age);
20
            list.add(map);
21
            // 以list集合套  对象的形式
22
            Person person = new Person(name, age);
23
            list2.add(person);
24
        }
25
        
26
        
27
        
28
    }
29
}
5集合装对象返回
5用迭代器的方法
1
public class Test6 {
2
3
    public static void main(String[] args) throws JSONException {
4
        String json = "{key1:value1,key2:value2,key3:value3}";
5
        // 另外一种解析方式
6
        //1
7
        JSONObject object= new JSONObject(json);
8
        // 2  采用迭代器
9
        // 把所有的键都放在迭代器中
10
        Iterator iterator = object.keys();
11
        
12
        while(iterator.hasNext()){
13
            // 获取key
14
            Object key = iterator.next();
15
            // 通过key 获取value
16
            Object value = object.get(key.toString());
17
            System.out.println(value);
18
            
19
        }
20
        
21
        
22
    }
23
}

原创粉丝点击