一、XML文件
可扩展标记语言(eXtensible Markup Language);常用配置文件
特性:
- xml具有平台无关性, 是一门独立的标记语言.
- xml具有自我描述性
XML语法格式 重点
- XML文档声明
必须放在第一行
<?xml version="1.0" encoding="UTF-8"?>
2.标记
开始标记(开放标记): <标记名称> 结束标记(闭合标记): </标记名称> 标记名称: 自定义名称,必须遵循以下命名规则:
1.名称可以含字母、数字以及其他的字符
2.名称不能以数字或者标点符号开始
3.名称不能以字符 “xml”(或者 XML、Xml)开始
4.名称不能包含空格,不能包含冒号(:)
5.名称区分大小写 标记内容: 开始标记与结束标记之间 ,是标记的内容.
3.一个XML文档中, 必须有且且仅允许有一个根标记
正例:
<names>
<name>张三</name>
<name>李四</name>
</names>
反例:
<name>李四</name>
<name>麻子</name>
4.标记可以嵌套, 但是不允许交叉.
5.标记的层级称呼 (子标记, 父标记 , 兄弟标记, 后代标记 ,祖先标记)
例如:
<persons>
<person>
<name>李四</name>
<length>180cm</length>
</person>
<person>
<name>李四</name>
<length>200cm</length>
</person>
</persons>
name是person的子标记,也是person的后代标记。
name是persons的后代标记。
name是length的兄弟标记。
person是name的父标记。
persons是name的祖先标记。
6. 标记名称 允许重复
7. 标记除了开始和结束 , 还有属性.
标记中的属性, 在标记开始时描述, 由属性名和属性值 组成.
格式: 在开始标记中, 描述属性. 可以包含0-n个属性,每一个属性是一个键值对!属性名不允许重复, 键与值之间使用等号连接,多个属性之间使用空格分割。属性值必须被引号引住。
8. 注释
注释不能写在文档文档声明前
注释不能嵌套注释
格式:
注释开始: <!--
注释结束: -->
二、JSON解析
JSON: JavaScript Object Notation
JSON是JS对象简谱,是一种轻量级的数据交换格式
欧洲计算机协会制定的JS规范的子集,完全独立于编程语言,用文本来表示数据
对象格式
用 java、js、XML、JSON描述上述内容:
一本书
书名
简介
java
class Book{
private String name;
private String info;
get/set...
}
Book b = new Book();
b.setName("Java核心技术");
b.setInfo("讲述了Java核心技术的有关内容");
XML
<book>
<name>Java核心技术</name>
<info>讲述了Java核心技术的有关内容</info>
</book>
JSON
JS中name和info的引号可以省略,可以是单的也可以是双的,与Java程序员交互时name和info加引号
{
"name":"Java核心技术",
"info":"讲述了Java核心技术的有关内容"
}
Gson
来自谷歌
将对象转换为JSON字符串
步骤
1.引入JAR包
2.在需要转换JSON字符串的位置编写如下代码:
String json = new Gson().toJSON(要转换的对象);
public static void main(String[] args) {
//1.创建Gson对象
Gson g = new Gson();
//2.转换
Book book = new Book(100,"Java核心技术","讲述了Java核心技术的有关内容");
String s = g.toJson(book);//传入对象转换为相应的Json对象
System.out.println(s);
}
将JSON字符串转换为对象
步骤
1.引入JAR包 在需要转换Java对象的位置编写如下代码:
2.对象 = newGson().fromJson(JSON字符串,对象类型.class);
代码示例1(转回对象):
public static void main(String[] args) {
//1.创建Gson对象
Gson g = new Gson();
//2.转换 {"id":100,"name":"Java核心技术","info":"讲述了Java核心技术的有关内容"}
Book book = g.fromJson("{\"id\":100,\"name\":\"Java核心技术\",\"info\":\"讲述了Java核心技术的有关内容\"}", Book.class);
System.out.println(book.getId());
System.out.println(book.getName());
System.out.println(book.getInfo());
}
代码示例2(转回集合):
public static void main(String[] args) {
//1.创建Gson对象
Gson g = new Gson();
//2.转换 {"id":100,"name":"Java核心技术","info":"讲述了Java核心技术的有关内容","page":["封装","继承","多态"]}
HashMap data = g.fromJson("{\"id\":100,\"name\":\"Java核心技术\",\"info\":\"讲述了Java核心技术的有关内容\",\"page\":[\"封装\",\"继承\",\"多态\"]}", HashMap.class);
System.out.println(data.get("id"));
System.out.println(data.get("name"));
System.out.println(data.get("info"));
System.out.println(data.get("page"));
System.out.println(data.get("page").getClass());
List page = (List)data.get("page");
System.out.println(page.get(1));
}
FastJson
来自阿里
将对象转换为JSON字符串
步骤
1.引入JAR包
2.在需要转换JSON字符串的位置编写如下代码即可:
String json=JSON.toJSONString(要转换的对象);
public static void main(String[] args) {
Book book = new Book(100,"Java核心技术","讲述了Java核心技术的有关内容");
//1.转换
String s = JSON.toJSONString(book);
System.out.println(s);
}
将JSON字符串转换为对象
步骤
引入JAR包
在需要转换Java对象的位置, 编写如下代码:
类型 对象名=JSON.parseObject(JSON字符串,类型.class);
或
List<类型> list=JSON.parseArray(JSON字符串,类型.class);
代码示例1(转回对象):
public static void main(String[] args) {
//1.转换 {"id":100,"info":"讲述了Java核心技术的有关内容","name":"Java核心技术"}
Book book = JSON.parseObject("{\"id\":100,\"info\":\"讲述了Java核心技术的有关内容\",\"name\":\"Java核心技术\"}", Book.class);
System.out.println(book.getId());
System.out.println(book.getName());
System.out.println(book.getInfo());
}
代码示例2(转回集合):
public static void main(String[] args) {
//1.转换 ["封装","继承","多态"]
List<String> strings = JSON.parseArray("[\"封装\",\"继承\",\"多态\"]", String.class);
System.out.println(strings.get(1));
}