JSON 포맷에 주석을 달고 싶은 경우가 있다. 예를 들어 ElasticSearch 쿼리를 작성했는데, 특정 JSON 부분이 왜 추가되었는지를 설명해두고 싶은 경우가 있다. 마치 SQL 쿼리에 주석을 다는 것처럼 ElasticSearch 쿼리에도 주석을 달고 싶었다.
JSON 주석
하지만 JSON에는 주석이 없다. JSON 표준의 창시자인 더글라스 크록포드에 의하면 JSON에는 주석이 들어가지 않는 것이 올바르다고 한다.
I removed comments from JSON because I saw people were using them to hold parsing directives, a practice which would have destroyed interoperability. I know that the lack of comments makes some people sad, but it shouldn't.
Suppose you are using JSON to keep configuration files, which you would like to annotate. Go ahead and insert all the comments you like. Then pipe it through JSMin before handing it to your JSON parser.
상호호환성 같은 시스템 간의 연동, 이종 시스템들간의 이해를 방해하지 않기 위해서 주석을 제거했다고 한다. 주석이 꼭 필요한 경우라면 주석을 사용하되 최종적으로 JSON 파서들에서 주석이 제거된 데이터를 다룰 수 있게 해야한다고 한다.
그래도 쓰고 싶으면
JSON은 데이터만 포함하고 있어야 한다. 주석은 원칙상 쓸 수 없다. 하지만 주석과 비슷한 역할을 하는 해석되지 않는 데이터를 추가해서 주석처럼 쓸 수는 있다.
예를 들어
{
"_comment" : " 이것은 주석처럼 보이지만 주석은 아니지만 주석이라고 하자",
"key": {
"subkey" : "value",
"attribute" : "value"
}
}
이런식으로 작성할 수 있다. _comment 혹은 뭐 다른 이름이라도 좋다. JSON 파서에 의해 파싱이 되긴하지만 사용되지 않는 엘리먼트를 추가하는 식이다. 저걸 파싱하는 쪽에서 안 쓰면 된다.
ElasticSearch에 던지는 JSON 쿼리에 주석을 다는 경우라면 Named query 같은걸 주석처럼 쓸 수도 있겠다.
댓글