FileStorage 만들기
- @Service : Spring의 서비스 컴포넌트로 등록
- 저장 경로 : FILE_PATH(XML 파일이 저장될 경로를 정의)에 경로 설정
- 폴더는 미리 만들어놔야 함
- 파일은 미리 만들지 않아도 자동으로 생성됨
- json 데이터로 받아서 xml 데이터로 저장하기
- JSON (JavaScript Object Notation) : 간단하고 읽기 쉬운 데이터 교환 형식
- 배열로 시작하여 각 객체는 중괄호
{}
로 감싸져있음 - 키-값 쌍으로 데이터가 표현
- 문자열, 숫자, 배열, 객체 등 다양한 데이터 타입을 지원
[ { "id": 1, "name": "Item 1" }, { "id": 2, "name": "Item 2" } ]
- 루트 태그(
<items>
)로 시작 - 각 항목은
<item>
태그로 감싸져 있음 - 내부에
<id>
와<name>
태그가 포함 - XML은 데이터의 계층 구조를 명확하게 표현
<items> <item> <id>1</id> <name>Item 1</name> </item> <item> <id>2</id> <name>Item 2</name> </item> </items>
- 필요한 의존성
- JSON 처리용 Jackson 라이브러리 : JSON 데이터를 객체로 변환하거나 객체를 JSON 문자열로 변환하는 데 사용
- XML 처리용 Jackson 라이브러리 : XML 데이터를 객체로 변환하거나 객체를 XML로 변환하는 데 사용
// JSON 처리용 Jackson 라이브러리 implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2' // XML 처리용 Jackson 라이브러리 implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.15.2'
package com.example.simpe_restapi._core; import com.example.simpe_restapi.item.Item; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.dataformat.xml.XmlMapper; import org.springframework.stereotype.Service; import java.io.File; import java.io.IOException; import java.util.List; @Service public class FileStorage { private static final String FILE_PATH = "data/items.xml"; private final ObjectMapper jsonMapper = new ObjectMapper(); private final XmlMapper xmlMapper = new XmlMapper(); // JSON 데이터를 XML로 저장 public void saveItemsAsXml(String jsonData) throws IOException { // JSON 데이터를 객체로 변환 List<Item> items = jsonMapper.readValue(jsonData, jsonMapper.getTypeFactory().constructCollectionType(List.class, Item.class)); // 객체를 XML로 변환하고 파일로 저장 xmlMapper.writeValue(new File(FILE_PATH), items); } // XML 파일에서 JSON 데이터 읽기 public String getItemsAsJson() throws IOException { // XML 파일에서 객체로 변환 List<Item> items = xmlMapper.readValue(new File(FILE_PATH), xmlMapper.getTypeFactory().constructCollectionType(List.class, Item.class)); // 객체를 JSON으로 포맷팅하여 변환 return jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(items); } }
Share article