23:47
Урок 42: JSON и XML

Курс по программированию на Java

Урок 42: JSON и XML

JSON (JavaScript Object Notation) и XML (eXtensible Markup Language) — это два широко используемых формата данных для обмена информацией между клиентами и серверами. JSON известен своей легкостью и читаемостью, а XML предоставляет гибкость и структурированность. В этом уроке мы рассмотрим основы работы с JSON и XML в Java, используя библиотеки Jackson и JAXB соответственно.

Работа с JSON

Для работы с JSON в Java часто используется библиотека Jackson. Пример сериализации и десериализации объекта в JSON:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonExample {
 public static void main(String[] args) throws Exception {
 ObjectMapper objectMapper = new ObjectMapper();

 // Создание объекта User
 User user = new User(1, "John Doe");

 // Сериализация объекта в JSON
 String jsonString = objectMapper.writeValueAsString(user);
 System.out.println("Serialized JSON: " + jsonString);

 // Десериализация JSON в объект
 User deserializedUser = objectMapper.readValue(jsonString, User.class);
 System.out.println("Deserialized User: " + deserializedUser);
 }
}

class User {
 private int id;
 private String name;

 public User(int id, String name) {
 this.id = id;
 this.name = name;
 }

 // Getters and setters omitted for brevity
}

Результат выполнения

Serialized JSON: {"id":1,"name":"John Doe"}
Deserialized User: User{id=1, name='John Doe'}

Работа с XML

Для работы с XML в Java можно использовать библиотеку JAXB (Java Architecture for XML Binding). Пример сериализации и десериализации объекта в XML:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

public class XmlExample {
 public static void main(String[] args) throws JAXBException {
 JAXBContext context = JAXBContext.newInstance(User.class);

 // Создание объекта User
 User user = new User(1, "Jane Doe");

 // Сериализация объекта в XML
 Marshaller marshaller = context.createMarshaller();
 StringWriter writer = new StringWriter();
 marshaller.marshal(user, writer);
 String xmlString = writer.toString();
 System.out.println("Serialized XML: " + xmlString);

 // Десериализация XML в объект
 Unmarshaller unmarshaller = context.createUnmarshaller();
 StringReader reader = new StringReader(xmlString);
 User deserializedUser = (User) unmarshaller.unmarshal(reader);
 System.out.println("Deserialized User: " + deserializedUser);
 }
}

@XmlRootElement
class User {
 private int id;
 private String name;

 public User() {
 }

 public User(int id, String name) {
 this.id = id;
 this.name = name;
 }

 // Getters and setters omitted for brevity
}

Результат выполнения

Serialized XML: <user><id>1</id><name>Jane Doe</name></user>
Deserialized User: User{id=1, name='Jane Doe'}

Упражнения

Упражнение 1: Сериализация и десериализация JSON

Создайте класс Product с полями id, name и price. Напишите программу для сериализации объекта Product в JSON и десериализации JSON в объект.

Решение:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JsonProductExample {
 public static void main(String[] args) throws Exception {
 ObjectMapper objectMapper = new ObjectMapper();

 // Создание объекта Product
 Product product = new Product(1, "Laptop", 799.99);

 // Сериализация объекта в JSON
 String jsonString = objectMapper.writeValueAsString(product);
 System.out.println("Serialized JSON: " + jsonString);

 // Десериализация JSON в объект
 Product deserializedProduct = objectMapper.readValue(jsonString, Product.class);
 System.out.println("Deserialized Product: " + deserializedProduct);
 }
}

class Product {
 private int id;
 private String name;
 private double price;

 public Product(int id, String name, double price) {
 this.id = id;
 this.name = name;
 this.price = price;
 }

 // Getters and setters omitted for brevity
}

Объяснение: Программа создает объект Product, сериализует его в JSON и затем десериализует JSON обратно в объект Product.

Упражнение 2: Сериализация и десериализация XML

Создайте класс Order с полями orderId и productName. Напишите программу для сериализации объекта Order в XML и десериализации XML в объект.

Решение:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;

public class XmlOrderExample {
 public static void main(String[] args) throws JAXBException {
 JAXBContext context = JAXBContext.newInstance(Order.class);

 // Создание объекта Order
 Order order = new Order(1, "Smartphone");

 // Сериализация объекта в XML
 Marshaller marshaller = context.createMarshaller();
 StringWriter writer = new StringWriter();
 marshaller.marshal(order, writer);
 String xmlString = writer.toString();
 System.out.println("Serialized XML: " + xmlString);

 // Десериализация XML в объект
 Unmarshaller unmarshaller = context.createUnmarshaller();
 StringReader reader = new StringReader(xmlString);
 Order deserializedOrder = (Order) unmarshaller.unmarshal(reader);
 System.out.println("Deserialized Order: " + deserializedOrder);
 }
}

@XmlRootElement
class Order {
 private int orderId;
 private String productName;

 public Order() {
 }

 public Order(int orderId, String productName) {
 this.orderId = orderId;
 this.productName = productName;
 }

 // Getters and setters omitted for brevity
}

Объяснение: Программа создает объект Order, сериализует его в XML и затем десериализует XML обратно в объект Order.

Категория: Java | Просмотров: 15 | Добавил: Admin | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *: