/
Letta21
/
CSV_XM_JSON
Обзор
Документация
Войти
/
Letta21
/
CSV_XM_JSON
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
CSV_JSON/src/main/java/main.java
100 строк
4 KB
Letta21
update CSV_JSON/src/main/java/main.java
15 янв 2026, 02:11
15 янв 2026, 02:11
3e74319
Код
Авторство
О чём код?
import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.reflect.TypeToken; import com.opencsv.CSVReader; import com.opencsv.bean.ColumnPositionMappingStrategy; import com.opencsv.bean.CsvToBean; import com.opencsv.bean.CsvToBeanBuilder; import org.w3c.dom.*; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; class Main { public static void main(String[] args) { // Задача 1 (CSV) String[] columnMapping = {"id", "firstName", "lastName", "country", "age"}; List<Employee> listFromCsv = parseCSV(columnMapping, "data.csv"); String jsonFromCsv = listToJson(listFromCsv); writeString(jsonFromCsv, "data.json"); // Задача 2 (XML) List<Employee> listFromXml = parseXML("data.xml"); String jsonFromXml = listToJson(listFromXml); writeString(jsonFromXml, "data2.json"); } private static List<Employee> parseXML(String fileName) { List<Employee> employeeList = new ArrayList<>(); try { // Создаем фабрику и билдер для чтения документа DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File(fileName)); // Получаем корневой элемент документа Node root = doc.getDocumentElement(); // Получаем список дочерних узлов (узлы <employee>) NodeList nodeList = root.getChildNodes(); for (int i = 0; i < nodeList.getLength(); i++) { Node node = nodeList.item(i); // интересуют только узлы-элементы if (Node.ELEMENT_NODE == node.getNodeType()) { Element element = (Element) node; // Извлекаем данные из тегов long id = Long.parseLong(element.getElementsByTagName("id").item(0).getTextContent()); String firstName = element.getElementsByTagName("firstName").item(0).getTextContent(); String lastName = element.getElementsByTagName("lastName").item(0).getTextContent(); String country = element.getElementsByTagName("country").item(0).getTextContent(); int age = Integer.parseInt(element.getElementsByTagName("age").item(0).getTextContent()); // Создаем объект и добавляем в список employeeList.add(new Employee(id, firstName, lastName, country, age)); } } } catch (Exception e) { e.printStackTrace(); } return employeeList; } // Методы из первой задачи private static List<Employee> parseCSV(String[] columnMapping, String fileName) { try (CSVReader csvReader = new CSVReader(new FileReader(fileName))) { ColumnPositionMappingStrategy<Employee> strategy = new ColumnPositionMappingStrategy<>(); strategy.setType(Employee.class); strategy.setColumnMapping(columnMapping); CsvToBean<Employee> csv = new CsvToBeanBuilder<Employee>(csvReader) .withMappingStrategy(strategy) .build(); return csv.parse(); } catch (IOException e) { return null; } } private static String listToJson(List<Employee> list) { Gson gson = new GsonBuilder().setPrettyPrinting().create(); Type listType = new TypeToken<List<Employee>>() {}.getType(); return gson.toJson(list, listType); } private static void writeString(String json, String fileName) { try (FileWriter file = new FileWriter(fileName)) { file.write(json); } catch (IOException e) { e.printStackTrace(); } } }