json数据详解

来源 JSON数据详解

一、 概念:JSON的全称是JavaScript Object Notation,是一种轻量级的数据交换格式。

优点:

(1)本质就是具有特定格式的字符串

(2)JSON完全独立于编程语言

(3)JSON比XML数据传输的有效性要高出很多,更省流量

缺点:

语义性较差,不如XML直观

二、JSON数据与XML数据的区别

mark

三、JSON的数据格式

1.对象

数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的

{“firstName”:”Brett”,”lastName”:”McLaughlin”,”email”:”aaaa”}

2.数组

数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取

[“java”,”javascript”,”vb”,…]

四、JSON解析

Json数据不能够直接被使用,需要我们将想要的数据从中解析出来

解析的方式有三种:

  1. 使用开源组织实现的jar包(称为官方标准)
  2. google的gson框架
  3. 阿里巴巴的fast-json

五、解析过程

1.1 使用原生的方式解析json数据

(1) 解析一个对象

mark

1
2
3
4
5
6
7
8
9
10
11
12
String json = "{name:'zhangsan',age:20,sex:'男'}";

// 使用原生的解析方式 解析

// 如果是对象 将json格式的string字符串装载到json对象中
JSONObjext object = new JSONOBJECT(json);
// 获得object中的数据
String name = object.getString("name");
int age = object.getInt("age");
String sex = object.getString("sex");

System.out.println(name+" "+age+" "+sex);

(2)解析一个对象嵌套对象

mark

1
2
3
4
5
6
7
8
9
10
11
12
String json = "{name:'jack',age:20,dept:{no:1,deptname:'android开发部'}}";

JSONOBject object = new JSONObject(json);

String name = object.getString("name");
int age = object.getInt("age");

JSONOBject object2 = object.getJSONObject("dept");
int no = object2.getInt("no");
String deptname = object2.getString("deptname");

System.out.println(name+" "+age+" "+no + " "+deptname);

(3)解析数组

mark

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
String json = "[{name:'tom',age:24},{name:'cindy',age:24},{name:'mandy',age:27},{name:'jerry',age:30}]";

JSONArray array = new JSONArray(json);

List<Map<String,Object>> list = new ArrayList<>();
List<Person> list2 = new ArrayList<>();

for(int i = 0; i< array.length();i++){

JSONObject object = array.getJSONObject(i);
String name = object.getString("name");
int age = object.getInt("age");
// 以list集合套map集合形式装数据的
Map<String,Object> map = new HashMap<>();
map.put("name":name);
list.add(map);
// 以list集合套对象的形式
Person person = new Person(name,age);
list2.add(person);
}

2.使用Gson解析数据

mark

1
2
3
4
String jsonString = "{name:'zhangsan',age:20,dept:{no:1,name:'android'}}";
Gson gson = new Gson();
Employee employee = gson.fromJson(jsonString,Employee.class);
System.out.println(employee.toString());

(2)解析数组

img

1
2
3
4
5
String str = "{no:1,name:'android',employees:[{name:'zhangsan',age:20},{name:'lisi',age:21},{name:'wangwu',age:22}]}";
Gson goGson = new Gson();
Dept dept = goGson.fromJson(str,Dept.class);
Systep.out.println(dept.getName());
Systep.out.printl(dept.getEmployees().size());

3.FastJson解析数据

(1)解析对象

mark

1
2
3
String jsonString="{name:'zhangsan',age:20,dept:{no:1,name:'android'}}"
Emplyee employee = JSON.parseObject(jsonString,Emplyee.class);
System.out.println(employee.toString());

(2)解析数组

mark

1
2
3
4
5
String str = "{no:1,name:'android',employees:[{name:'zhangsan',age:20},{name:'lisi',age:21},{name:'wangwu',age:22}]}";

Dept dept = JSON.parseObject(str, Dept.class);
System.out.println(dept.getName());
Sytem.out.println(dept.getElementyees().size());
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2023 高行行
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信