JSON 설정 파일이 왜 이렇게 많을까?
Why do so many tools have JSON config files?
JSON 설정 파일은 거의 모든 곳에 존재한다. 이 글은 그 이유를 분석하며, JSON이 가진 단순함과 유연성이 설정 파일 형식으로서 얼마나 매력적인지 설명한다. 또한 JSON이 가진 한계와 대안적인 설정 파일 형식에 대해서도 논의한다.
JSON은 설정 파일의 표준이 되었지만, 그 인기에는 이유가 있다.
HN 토론
59- raincole
왜 이렇게 많은 도구들이 JSON 설정 파일을 사용하는 걸까‽ 옵션이 왜 그렇게 설정되었는지 주석을 다는 것은 정말 기본적으로 하고 싶은 일인데… 기술하는 사람들은 왜 이렇게 문서로 남기는 걸 싫어할까⁇
그게 게시물의 전부다. 첫째, 이게 왜 HN에 올라왔는지 모르겠다. 둘째, 'JSON 설정'과 '문서로 남기기'가 어떻게 정반대의 선택지가 되는지 이해가 안 간다.
- szatkus
기술하는 사람들 중 상당수는 문서화가 자신의 직업 안정성을 보장한다고 생각해서 문서화를 거부한다.
아니, 우리는 그냥 게으른 것뿐이야.
- gwbas1c
왜 이렇게 많은 도구들이 JSON 설정 파일을 사용하는 걸까‽
1: JSON은 다루기 매우 쉬운 직렬화 형식이기 때문이다. 아마 이런 도구들은 설정 파일에서 직접 역직렬화되는 설정 클래스/객체를 가지고 있을 것이다.
2: 이런 도구들 중 상당수가 JavaScript로 작성되었을 가능성이 높고, JavaScript에서는 JSON을 다루기가 매우 쉽다.
- mholt
Caddy의 경우 우리는 JSON을 선택했는데, 그 이유는 JSON이 꽤 보편적이고 Go 구조체와 거의 1:1로 매핑되며(확장 가능한 서버를 초기화하는 데 유용), 거의 모든 다른 형식이 어떤 식으로든 JSON으로 컴파일되므로 실제로는 원하는 설정 형식을 선택할 수 있기 때문입니다: https://caddyserver.com/docs/config-adapters
- zzo38computer
내 생각에 JSON은 최고의 형식이 아니며 몇 가지 문제점이 있다. 주석이 없다는 것이 그들이 언급한 이유 중 하나다. 또 하나는 후행 쉼표가 없다는 점이다(선택적 후행 쉼표는 수동으로 작성된 파일에 유용할 것이다). 그러나 이것들은 구문의 문제이고, 데이터에도 문제가 있다. 예를 들어 적절한 정수 타입이 없고, Infinity와 NaN이 없으며, Unicode(및 ASCII) 이외의 문자 집합을 지원하지 않고, 적절한 옥텟 문자열 타입이 없는 등의 문제가 있다.