1.数据交换格式
java中主流的数据交换格式有XML、YAML、JSON。
1.1.XML
XML 指可扩展标记语言(eXtensible Markup Language),是重量级的,进行数据交换时非常占用宽带。
解析方式:
1、DOM4J:一下将文件加载进内存,不适合大文件解析
*** 2、SAX:***基于事件对XML进行解析
3、PULL:Pull解析器的运行方式与SAX 解析器相似。Pull解析是一种流式解析,边读取边解析.从一个xml文档自上往下进行读取。
1.2.JSON
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
格式:
JSON数据格式非常简单,简单来说,只有四点:
**1)**并列数据之间用逗号(,)分隔;
**2)**映射用冒号(:)表示;
**3)**并列数据的集合用方括号([])表示;
**4)**映射的集合用大括号({})表示。
如下格式
1
2
3
4
5
6
7
8{
"error":404,
"msg":"找不到该页面!",
"array":[
{"name":"truly","age":18},
{"name":"truly01","age":20}
]
}
JAVA操作JSON的框架:
1、JackSon:springmvc自带。
*** 2、gson:***谷歌的框架
3、FastJson:阿里公司研发,主流JSON操作框架。
1.3.FastJSON
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
本次主要学习FastJson如何操作JSON对象。熟悉其中常用的api接口。
首先需要引入坐标
1
2
3
4
5<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>1、序列化:java对象转换成json格式
1
2String text = JSON.toJSONString(obj); //序列化
VO vo = JSON.parseObject("{...}", VO.class); //反序列化对象转JsonObject
1
2
3
4
5
6
7
8
9//student对象,转为Object格式字符串
//调用静态方法,传递要转换的对象
JSONObject jsonObject=(JSONObject)JSON.toJSON(student);
//查看参数
jsonObject.getIntValue("id");
jsonObject.getString("name");
System.out.println(jsonObject);
System.out.println(jsonObject.getIntValue("id"));
System.out.println(jsonObject.getString("name"));2、反序列化:json格式转换成java对象
1
User user =JSON.parseObject(json,User.class); //反序列化
JSON数组转List
1
2
3
4
5
6
7
8
9
10
11
12
13//反序列化
//JSON类的静态对象parseObject
//传递要反序列化的JSON对象,传递转换后的集合的泛型的class对象
List<Student> listMaps = JSONArray.parseArray(JSON.toJSONString(list),Student.class);
List<Student> mapsList = JSONObject.parseArray(JSON.toJSONString(list), Student.class);
System.out.println(listMaps);
System.out.println(mapsList);
for (Student map : listMaps) {
System.out.println(map);
}
for (Student map : mapsList) {
System.out.println(map);
}JSON转Map
1
2
3
4
5
6
7
8
9
10
11
12
13
14//反序列化1
Map<String,Object> maps = JSONObject.parseObject(jsonString,Map.class);
for (String key1 : maps.keySet()) {
System.out.println(key1+"::"+map.get(key1));
}
//JSON类的静态方法,parseObject
//直接进行反序列化,Map集合没有泛型的,泛型没有是不安全的集合
//转后的集合,必须有泛型
//调用parseObject传递参数TypeReference类型在TypeReference类的泛型传递转后的Map集合
Map<String, Student> map1 = JSON.parseObject(jsonString, new TypeReference<Map<String, Student>>() {
});
for (String key : map1.keySet()) {
System.out.println(key+"::"+map.get(key));
}JsonObject转对象
1
2
3//反序列化
Student student1=JSON.toJavaObject(jsonObject, Student.class);
System.out.println(student1);扩展
JsonObject转JsonString(JSON)
1
String jsonString1=JSON.toJSONString(jsonObject);
JsonString转JsonObject
1
2
3JSONObject jsonObject=JSON.parseObject(jsonString);
#查询
jsonObject.getString("Name");JsonString转JsonArray
1
JSONArray jArray=JSON.parseArray(JSON.toJSONString(list));
JSONArray转String
1
String jsonString = jsonArray.toString();
3、JSonFieId注解的使用:
1 | *@JSonFleId注解 |
4、JsonType注解的使用:
1 | *@JSonType注解 |