콘텐츠로 이동

6. 데이터 타입과 JSON 표현#

DataAPI는 SQL 매개변수와 조회 결과를 JSON 형식으로 주고받는다.

일반적인 SQL 매개변수는 JSON 기본 타입(Number, String, Boolean, null)으로 전달할 수 있다. BLOB, CLOB과 같이 데이터 타입을 명시적으로 지정해야 하는 매개변수는 타입 정보를 포함한 객체를 사용하여 전달한다.

조회 결과는 Altibase 데이터 타입에 따라 적절한 JSON 타입으로 변환되어 반환된다.

6.1 일반 입력#

SQL 요청의 args에는 일반적으로 JSON의 기본 타입(Number, String, Boolean, null)을 사용한다. | JSON 타입 | 설명 | | ---------- | ---- | | Number | 숫자 값 | | String | 문자열 | | Boolean | 논리값(true 또는 false) | | null | NULL |

6.2 구조화된 객체(Structured Object) 입력#

BLOB, CLOB처럼 JSON 기본 타입만으로 표현하기 어려운 데이터는 typevalue를 포함한 객체를 사용하여 명시적으로 타입을 지정한다.

예시:

{
  "type": "blob",
  "value": "AQID"
}

지원하는 타입은 다음과 같다.

type value 형식 용도
blob Base64 문자열 큰 바이너리 입력
clob 문자열 큰 텍스트 입력
varbyte Base64 문자열 Altibase 전용 바이너리 타입
geometry Base64 문자열 공간 데이터 바이너리 표현
nibble 16진수 문자열 Altibase nibble 값
bit 0/1 문자열 bit 값
varbit 0/1 문자열 varbit 값
bigint 정수 문자열 64-bit 정수
numeric 정밀도를 유지하는 숫자 문자열 정밀도 보존 숫자
decimal 정밀도를 유지하는 숫자 문자열 정밀도 보존 숫자
number 정밀도를 유지하는 숫자 문자열 정밀도 보존 숫자

bigint, numeric, decimal, number는 정밀도 손실을 방지하기 위해 문자열(String)로 전달한다.

예시:

{
  "sql": "INSERT INTO T1 (ID, PAYLOAD, NOTE) VALUES (?, ?, ?)",
  "args": [
    1,
    { "type": "blob", "value": "AQID" },
    { "type": "clob", "value": "memo" }
  ]
}

Caution

잘못된 Base64, 잘못된 nibble hex, 범위를 벗어난 bigint, 잘못된 bit 문자열은 COMMON_002 오류로 거부된다.

6.3 조회 결과의 JSON 표현#

조회 결과는 Altibase 데이터 타입에 따라 아래와 같이 JSON으로 변환된다.

Altibase 데이터 타입 JSON 표현 비고
SMALLINT, INTEGER Number 일반 정수
REAL, DOUBLE Number 부동소수
BIGINT String 정밀도 보존
NUMERIC, DECIMAL, NUMBER String 정밀도 보존
CHAR, VARCHAR, NCHAR, NVARCHAR String 문자열
DATE, TIME, TIMESTAMP String JDBC 문자열 표현
INTERVAL String JDBC 드라이버 toString() 값
BIT, VARBIT String 0/1 문자열
NIBBLE String 대문자 16진수 문자열
BYTE, VARBYTE, BLOB String Base64 문자열
GEOMETRY String Base64 문자열
CLOB String 문자열
JSON String JSON 텍스트