tojson
지정한 필드의 값을 JSON 문자열로 변환합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 미지원 |
문법
tojson [output=STR] [FIELD [, FIELD ...]]
옵션
output=STR- JSON 문자열을 저장할 출력 필드 이름 (기본값:
_json).
대상
FIELD- JSON으로 변환할 필드. 쉼표로 구분하여 여러 필드를 지정할 수 있습니다. 생략하면 레코드의 전체 필드를 변환합니다.
입력 필드
없음
출력 필드
| 필드 | 타입 | 설명 |
|---|---|---|
_json | 문자열 | JSON으로 변환된 문자열. output 옵션으로 필드 이름을 변경할 수 있습니다. |
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 22300 | 필드가 없습니다. | 필드 목록이 쉼표로 끝나 다음 필드명이 없는 경우 |
런타임 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| - | Nesting too deep. | 변환 대상 값의 JSON 중첩 depth가 제한을 초과하는 경우. 쿼리가 오류로 중단됩니다. 제한은 REST API 기준 200 단계이며, 웹 콘솔에서는 JSON 구조에 따라 최대 198 단계까지 지원합니다. |
| - | argument should be map, object array or collection, [클래스명] | 문자열·숫자·불리언·날짜·IP 주소·UUID·바이트 배열 등 지원되는 타입이 아닌 값이 포함된 경우. 쿼리가 오류로 중단됩니다. |
설명
tojson 명령어는 지정한 필드의 값을 JSON 문자열로 변환하여 출력 필드에 할당합니다. 필드를 지정하지 않으면 레코드의 전체 필드를 JSON 객체로 변환합니다.
변환 결과는 output 옵션으로 지정한 필드에 저장됩니다. output을 지정하지 않으면 _json 필드에 저장됩니다.
필드를 지정한 경우 지정한 순서대로 JSON 객체의 키가 생성됩니다. 맵이나 배열처럼 값 안에 값이 중첩된 구조는 최대 200 단계까지 변환할 수 있으며, 이를 초과하면 오류로 쿼리가 중단됩니다. 200 단계는 REST API로 쿼리를 실행할 때 기준이며, 웹 콘솔에서 실행하면 결과를 표시하는 과정에서 제한이 더 엄격하게 적용되어 JSON 구조에 따라 최대 198 단계까지만 지원합니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
전체 레코드를 JSON으로 변환
table WEB_APACHE_SAMPLE | tojson output=result레코드의 전체 필드를 JSON 문자열로 변환하여
result필드에 할당합니다. -
특정 필드만 JSON으로 변환
table WEB_APACHE_SAMPLE | tojson output=request_json src_ip, method, uri, statussrc_ip,method,uri,status필드만 JSON 문자열로 변환하여request_json필드에 할당합니다. -
기본 출력 필드명으로 변환
table WEB_APACHE_SAMPLE | tojson src_ip, method, urisrc_ip,method,uri필드를 JSON 문자열로 변환하여 기본 출력 필드_json에 저장합니다.
변경 이력
| 대상 | 도입 릴리스 |
|---|---|
tojson 명령어 | 소나 4.0 이전 버전 |
| 중첩 depth 제한 완화(20 → 200) | 4.0.2609.0 |
| 필드 지정 시 키 순서 보장 | 4.0.2609.0 |