Json解析精讲

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入门
1
/**
2
 * 只有一个对象{....}
3
 *
4
 */
5
public class Test {
6
7
    public static void main(String[] args) throws JSONException {
8
        String json = "{name:'zhangsan',age:20,sex:'男'}";
9
        
10
        // 使用原生的解析方式  解析
11
        
12
        // 如果是对象         将json格式的string字符串装载到json对象中
13
        JSONObject  object = new JSONObject(json);
14
        // 获得object中的数据
15
        String name = object.getString("name");
16
        int age = object.getInt("age");
17
        String sex = object.getString("sex");
18
        
19
        System.out.println(name+"  "+age+"  "+sex);
20
    }
21
}
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 Test3 {
2
3
    public static void main(String[] args) throws JSONException {
4
        String json = "{name:'jack',age:20,dept:{no:1,deptname:'android开发部'}}";
5
        
6
        JSONObject object = new JSONObject(json);
7
        
8
        String name = object.getString("name");
9
        int age = object.getInt("age");
10
        
11
        JSONObject object2 = object.getJSONObject("dept");
12
        int no= object2.getInt("no");
13
        String deptname = object2.getString("deptname");
14
        
15
        System.out.println(name+" "+age+" "+no  +" "+deptname);
16
        
17
        // 如果返回可以使用一个map集合返回
18
        Map<String,Object> map = new HashMap<>();
19
        map.put("name", name);
20
        map.put("age", age);
21
        map.put("no", no);
22
        map.put("deptname", deptname);
23
        
24
        // 以一个类的对象的形式返回
25
        
26
        Person person = new Person();
27
        person.setName(name);
28
        person.setAge(age);
29
        Dept dept = new Dept();
30
        dept.setNo(no);
31
        dept.setDeptname(deptname);
32
        person.setDept(dept);
33
        System.out.println(person);
34
        
35
    }
36
}
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
}
1
public class Person {
2
3
    String name;
4
    int  age;
5
    Dept dept;
6
    public String getName() {
7
        return name;
8
    }
9
    public void setName(String name) {
10
        this.name = name;
11
    }
12
    public int getAge() {
13
        return age;
14
    }
15
    public void setAge(int age) {
16
        this.age = age;
17
    }
18
    public Dept getDept() {
19
        return dept;
20
    }
21
    public void setDept(Dept dept) {
22
        this.dept = dept;
23
    }
24
    @Override
25
    public String toString() {
26
        return "Person [name=" + name + ", age=" + age + ", dept=" + dept + "]";
27
    }
28
    
29
    
30
}
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集合装对象返回
1
public class Test5 {
2
3
    public static void main(String[] args) throws JSONException {
4
        String json = "{person:[{name:'tom',age:24},{name:'cindy',age:24},{name:'mandy',age:27},{name:'jerry',age:30}]}";
5
    
6
        JSONObject object = new JSONObject(json);
7
        
8
        JSONArray array = object.getJSONArray("person");
9
        // 集合一定要在  循环外面创建
10
        List<Person> list = new ArrayList<>();
11
        
12
        for (int i = 0; i < array.length(); i++) {
13
            
14
            JSONObject object2 = array.getJSONObject(i);
15
            String name = object2.getString("name");
16
            int age = object2.getInt("age");
17
            
18
            Person person = new Person(name, age);
19
            list.add(person);
20
        }
21
        
22
        System.out.println(list);
23
    }
24
}
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
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值