Jackson 라이브러리의 JSON 파서(JsonParser)가 가지는 모든 기본 설정은 JsonParser.Feature 열거형(enum)으로 표현할 수 있습니다. JsonParser.Feature.values() 메서드를 호출하면 JSON 파서에서 사용 가능한 모든 기능(Feature) 목록을 가져올 수 있으며, 특정 파서에서 해당 기능이 활성화(enabled)되어 있는지 비활성화(disabled)되어 있는지는 JsonParser의 isEnabled() 메서드를 통해 확인할 수 있습니다.
문법(Syntax)
public static enum JsonParser.Feature extends Enum<JsonParser.Feature>
예제 코드
아래 예제에서는 JSON 문자열을 파싱하기 위해 JsonFactory로부터 JsonParser를 생성한 뒤, 모든 Feature를 순회하면서 각각의 활성화 여부를 출력합니다.
import com.fasterxml.jackson.core.*;
import java.io.*;
public class JsonParserSettingsTest {
public static void main(String[] args) throws IOException {
String json = "[{\"name\":\"Adithya\", \"age\":\"30\"}," + "{\"name\":\"Ravi\", \"age\":\"35\"}]";
JsonFactory jsonFactory = new JsonFactory();
JsonParser jsonParser = jsonFactory.createParser(json);
for(JsonParser.Feature feature : JsonParser.Feature.values()) {
System.out.println(feature.name() + ":" + jsonParser.isEnabled(feature));
}
}
}실행 결과
AUTO_CLOSE_SOURCE:true ALLOW_COMMENTS:false ALLOW_YAML_COMMENTS:false ALLOW_UNQUOTED_FIELD_NAMES:false ALLOW_SINGLE_QUOTES:false ALLOW_UNQUOTED_CONTROL_CHARS:false ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER:false ALLOW_NUMERIC_LEADING_ZEROS:false ALLOW_NON_NUMERIC_NUMBERS:false ALLOW_MISSING_VALUES:false ALLOW_TRAILING_COMMA:false STRICT_DUPLICATE_DETECTION:false IGNORE_UNDEFINED:false INCLUDE_SOURCE_IN_LOCATION:true
주요 설정 항목 설명
- AUTO_CLOSE_SOURCE: 파서가 닫힐 때 자동으로 입력 소스도 함께 닫습니다.
- ALLOW_COMMENTS: JSON 내 주석 사용을 허용합니다.
- ALLOW_UNQUOTED_FIELD_NAMES: 따옴표 없는 필드 이름을 허용합니다.
- ALLOW_SINGLE_QUOTES: 작은따옴표(') 사용을 허용합니다.
- ALLOW_TRAILING_COMMA: 마지막 요소 뒤의 쉼표를 허용합니다.
- STRICT_DUPLICATE_DETECTION: 중복된 필드 이름을 엄격하게 검사합니다.
이처럼 isEnabled() 메서드와 Feature 열거형을 조합하면 현재 파서의 동작 설정을 손쉽게 진단하거나 디버깅할 수 있어, JSON 처리 로직을 세밀하게 제어해야 하는 상황에서 매우 유용합니다.