YAML(YAML Ain't Markup Language)
YAML(YAML Ain't Markup Language)은 사람이 쉽게 읽고 쓸 수 있는 데이터 직렬화 형식입니다. 주로 설정 파일이나 데이터 구조를 표현하는 데 사용됩니다. 아래는 YAML의 기본적인 사용법에 대한 설명입니다:
기본 문법:
들여쓰기: 들여쓰기는 공백 문자로 이루어지며, 하위 항목을 나타냅니다. 일반적으로 공백 2개 또는 4개를 사용합니다.
키-값 쌍: 콜론(:)으로 키와 값을 구분합니다.
리스트: 대시(-)를 사용하여 목록을 나타냅니다.
주석: '#' 기호를 사용하여 주석을 작성할 수 있습니다. '#' 기호 뒤의 내용은 무시됩니다.
문자열:
따옴표: 작은 따옴표(')나 큰 따옴표(")를 사용하여 문자열을 감싸고 표현할 수 있습니다.
여러 줄 문자열: '|'를 사용하여 여러 줄의 문자열을 표현할 수 있습니다. 들여쓰기를 유지하면서 여러 줄의 텍스트를 작성할 수 있습니다.
이스케이프: 역슬래시()를 사용하여 특수 문자를 이스케이프할 수 있습니다.
데이터 유형:
숫자: 정수나 부동 소수점 숫자를 그대로 작성할 수 있습니다.
불리언: true나 false로 불리언 값을 표현할 수 있습니다.
널: null로 널 값을 표현할 수 있습니다.
객체와 중첩:
중첩된 객체: 들여쓰기를 사용하여 중첩된 객체를 표현할 수 있습니다.
키의 중복: 동일한 키를 사용하여 여러 값을 가진 객체를 표현할 수 있습니다. 나중에 선언된 값이 이전 값을 덮어씁니다.
리스트:
배열: 대시(-)를 사용하여 리스트를 표현할 수 있습니다. 각 항목은 새로운 줄에서 시작하고, 들여쓰기로 계층 구조를 표현합니다.
참조:
앵커(&)와 별칭(*) 기호를 사용하여 데이터를 참조할 수 있습니다. 앵커로 데이터를 정의하고, 별칭을 사용하여 다른 위치에서 해당 데이터를 참조할 수 있습니다.
YAML은 이외에도 더 많은 기능과 사용법을 제공합니다. 각 프로그래밍 언어에서 YAML을 해석하고 처리하는 방법은 다를 수 있으므로 해당 언어의 YAML 파서 또는 라이브러리의 문서를 참조해야 합니다.
# 주석 예제
person:
name: John Doe
age: 30
isEmployed: true
address:
street: 123 Main St
city: Anytown
country: USA
favoriteFruits:
- Apple
- Banana
- Orange
nestedObject:
subObject1:
key1: value1
key2: value2
subObject2:
key3: value3
key4: value4
위 예제에서는 다음과 같은 YAML 문법과 구조를 보여줍니다:
- 주석을 사용하여 설명을 추가할 수 있습니다.
- 키와 값은 콜론(:)으로 구분하며, 들여쓰기로 계층 구조를 표현합니다.
- 객체는 키-값 쌍으로 표현되며, 중첩하여 표현할 수 있습니다.
- 리스트는 대시(-)로 표현되며, 여러 값을 가질 수 있습니다.
- 문자열은 따옴표(' 또는 ")로 감싸서 표현합니다.
- 숫자는 그대로 작성할 수 있고, 불리언은 true 또는 false로 표현합니다.
- 위의 예제는 사람(person)과 주소(address)에 대한 정보를 포함하고 있으며, 좋아하는 과일(favoriteFruits)과 중첩된 객체(nestedObject)도 포함하고 있습니다.
Java에서 YAML을 파싱하고 처리하기 위해 사용할 수 있는 몇 가지 인기 있는 라이브러리가 있습니다. 다음은 그 중 몇 가지의 라이브러리와 간략한 요약입니다:
SnakeYAML:
SnakeYAML은 Java에서 YAML을 처리하기 위한 강력하고 유연한 라이브러리입니다.
YAML 문서를 Java 객체로 변환하거나 Java 객체를 YAML 문서로 직렬화할 수 있습니다.
객체 그래프를 유지하며 YAML을 처리할 수 있는 기능을 제공합니다.
Jackson YAML:
Jackson YAML은 Jackson 라이브러리의 일부로 제공되며, YAML을 파싱하고 생성하기 위한 기능을 제공합니다.
Jackson의 ObjectMapper를 사용하여 YAML을 Java 객체로 변환하거나 Java 객체를 YAML로 직렬화할 수 있습니다.
JSON과 YAML 간의 변환도 지원합니다.
SnakeYAML vs Jackson YAML:
SnakeYAML과 Jackson YAML은 둘 다 강력하고 널리 사용되는 라이브러리입니다.
SnakeYAML은 YAML 문서의 파싱과 생성에 특화되어 있으며, YAML의 일부 고급 기능을 지원합니다.
Jackson YAML은 Jackson 라이브러리의 확장 기능으로 제공되며, JSON과의 상호 운용성을 강조하면서 YAML을 처리합니다.
사용법:
각 라이브러리는 고유한 사용법과 API를 가지고 있으며, 자세한 내용은 각 라이브러리의 공식 문서와 예제를 참조해야 합니다.
라이브러리를 프로젝트에 추가하고, 해당 라이브러리의 클래스와 메서드를 사용하여 YAML을 처리할 수 있습니다.
위의 라이브러리들은 Java에서 YAML을 처리하는 데 널리 사용되는 몇 가지 옵션입니다. 각 라이브러리는 고유한 특징과 기능을 제공하므로 프로젝트의 요구 사항에 맞게 선택할 수 있습니다. 자세한 사용법과 예제는 각 라이브러리의 공식 문서를 참조하시기 바랍니다.