0
点赞
收藏
分享

微信扫一扫

XML 和 JSON

小飞侠熙熙 2022-03-30 阅读 79
xmljson

一、XML

1. XML 的定义、作用、规范及语法

<?xml version="1.0" encoding="utf-8" ?>
<books>
    <book isbn="123123123123">
        <name>平凡的世界</name>
        <author>路遥</author>
        <price>160</price>
    </book>
</books>

2. XML 解析技术

@Test
public void dom4JTest() throws DocumentException {
    // 1. 创建 SaxReader 对象输入流,去读取 xml 配置文件,生成 document 对象
    SAXReader saxReader = new SAXReader();
    Document document = saxReader.read("books.xml");
    System.out.println(document);
    
    // 获取根元素
	Element rootElement = document.getRootElement();
	// 获取子元素集合
	List<Element> books = rootElement.elements("book");
	for (Element book : books) {
        // 获取子元素属性值
        String isbn = book.attributeValue("isbn");
        // 分别获取子元素的子元素
        Element nameElement = book.element("name");
        String nameText = nameElement.getText();
        String authorText = book.elementText("author");
        double price = Double.parseDouble(book.elementText("price"));
        Book book1 = new Book(isbn, nameText, authorText, price);
        System.out.println(book1);
	}
}

二、JSON

1. JSON 的定义和访问

var jsonObj = {
    "key1": 12,
    "key2": "abc",
    "key3": true,
    "key4": [11, "array", false],
    "key5": {
        "key5_1": 324,
        "key5_2": "key5_2_value"
    }
}

2. JSON 在 JavaScript 中的两种常用转换方法

3. JavaBean 和 JSON 的相互转换

Gson gson = new Gson();
String jsonString = gson.toJson(new Person("Bear", 22));
System.out.println(jsonString);
Person person = gson.fromJson(jsonString, Person.class);
System.out.println(person);

4. List 集合与 JSON 的相互转换

List<Person> peopleList = new ArrayList<>();
peopleList.add(new Person("bear", 22));
peopleList.add(new Person("spring", 11));

// 将 List 集合转换为 json
Gson gson = new Gson();
String peopleJsonString = gson.toJson(peopleList);
System.out.println(peopleJsonString);

// 将 json 字符串转换为 List 对象,使用 gson.fromJson() 方法的第二个参数需要自定义类继承 com.google.gson.reflect.TypeToken 类,并在泛型中指明类型
List<Person> people = gson.fromJson(peopleJsonString, new PersonListType().getType());
System.out.println(people);

public class PersonListType extends com.google.gson.reflect.TypeToken<List<Person>> {
}

5. Map 集合和 JSON 的相互转换

Map<Integer, Person> personMap = new HashMap<>();
personMap.put(1, new Person("1", 1));
personMap.put(2, new Person("2", 2));

Gson gson = new Gson();
String personJsonString = gson.toJson(personMap);
System.out.println(personJsonString);

// 使用匿名内部类以替代自定义的实现类
Map<Integer, Person> map = gson.fromJson(personJsonString, new TypeToken<Map<Integer, Person>>() {
}.getType());
System.out.println(map);
举报

相关推荐

0 条评论