JAVA 的数据交换格式
程序员文章站
2022-05-19 13:23:12
...
什么是数据交换格式?
客户端 和服务器端的交互格式为 HTML 丶 JSON 丶 XML
数据交换格式用场景
安卓 移动端 等 采用 HTTP + JSON 进行传输
WEB Service 采用 HTTP +XML 进行传输
注意:JSON 是轻量级的交互格式 而 XML 是重量级的交互格式 不是很适合 HTTP 进行交互
什么是JSON?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式
JSON对象列子:
{
"key":"value",
"key":"value",
"key":"value",
"key":"value",
}
JSON 数组列子:
{
"name":[
{
"key":"value",
},
{
"key":"value",
}
],
"name2":[
{
"key":"value",
},
{
"key":"value",
}
}
JSON有两种结构:
第一种 : JSON 数组 用 { }包裹 key : value 多个 用 , 分开
第二种: JSON 数组 用{ name:[ ] } 多个 用 , 分开
常用JSON解析框架
fastjson(阿里)、gson(谷歌)、jackson(SpringMVC自带)
添加jar fastjson-1.1.43 或引入maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.43</version>
</dependency>
fastjson api 的使用
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
public class GetJson {
public static void main(String[] args) {
String jsonStr = "{\"sites\":[{\"name\":\"百度\",\"url\":\"www.baidu.com\"},{\"name\":\"优酷\",\"url\":\"http://youku.com/\"}]}";
JSON.getJSON(jsonStr);
JSONObject stObject = new JSONObject();
stObject.put("name", "百度");
stObject.put("url", "www.baidu.com");
System.out.println(JSON.setJSON(stObject));
}
}
class JSON{
//返回JSON数组
public static Object getJSON(String jsonStr) {
JSONObject jsonObject = new JSONObject();
JSONObject jsonStrObject = jsonObject.parseObject(jsonStr);
System.out.println(jsonStrObject.toString());
return jsonStrObject.getJSONArray("sites");
}
//返回 生成的JSON
public static String setJSON(JSONObject stObject) {
JSONObject jsonObject = new JSONObject();
JSONArray jsonArray = new JSONArray();
jsonArray.add(stObject);
jsonObject.put("sites", jsonArray);
return jsonObject.toJSONString();
}
}
XML解析方式
什么是XML?
它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。
XML 全称为可扩展的标记语言。主要用于描述数据和用作配置文件。
Dom4j与Sax区别?
Dom4j 不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,Sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student1 id="001">
<微信公众号>独孤求败</微信公众号>
<学号>20140101</学号>
<地址>北京海淀区</地址>
<座右铭>要么强大,要么听话</座右铭>
</student1>
<student2 id="002">
<新浪微博>残缺的孤独</新浪微博>
<学号>20140102</学号>
<地址>北京朝阳区</地址>
<座右铭>在哭泣中学会坚强</座右铭>
</student2>
</students>
JAVA 代码:
public static void getXML() throws DocumentException {
SAXReader saxReader = new SAXReader();
Document read = (Document) saxReader.read(new File("E:\\BaiduNetdiskDownload\\1+2+3+4期\\01 java架构师蚂蚁1\\0005-每特教育(蚂蚁课堂)-数据交换格式与SpringIOC底层实现\\代码\\spring-test\\src\\main\\resources//stu.xml"));
// 获取根节点
Element rootElement = read.getRootElement();
getNodes(rootElement);
}
static public void getNodes(Element rootElement) {
System.out.println("当前节点名称:" + rootElement.getName());
// 获取属性ID
List<Attribute> attributes = rootElement.attributes();
for (Attribute attribute : attributes) {
System.out.println("属性:" + attribute.getName() + "---" + attribute.getText());
}
if (!rootElement.getTextTrim().equals("")) {
System.out.println(rootElement.getName() + "--" + rootElement.getText());
}
// 使用迭代器遍历
Iterator<Element> elementIterator = rootElement.elementIterator();
while (elementIterator.hasNext()) {
Element next = elementIterator.next();
getNodes(next);
}
}