
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