Microsoft SQL Server
JSON 용
수색…
JSON 경로 용
SELECT 쿼리의 결과를 JSON 텍스트 형식으로 나타냅니다. FOR JSON PATH 절이 쿼리 후 추가됩니다.
SELECT top 3 object_id, name, type, principal_id FROM sys.objects
FOR JSON PATH
열 이름은 JSON에서 키로 사용되며 셀 값은 JSON 값으로 생성됩니다. 쿼리의 결과는 JSON 객체의 배열입니다.
[
{"object_id":3,"name":"sysrscols","type":"S "},
{"object_id":5,"name":"sysrowsets","type":"S "},
{"object_id":6,"name":"sysclones","type":"S "}
]
principal_id 열의 NULL 값은 무시됩니다 (생성되지 않음).
열 별칭이있는 JSON PATH의 경우
FOR JSON PATH를 사용하면 열 별칭을 사용하여 출력 JSON의 형식을 제어 할 수 있습니다.
SELECT top 3 object_id as id, name as [data.name], type as [data.type]
FROM sys.objects
FOR JSON PATH
열 별칭이 키 이름으로 사용됩니다. 도트로 구분 된 별칭 (data.name 및 data.type)은 중첩 된 객체로 생성됩니다. 두 개의 열이 점 표기법에서 동일한 접두사를 갖는 경우, 단일 객체로 그룹화됩니다 (이 예제의 데이터).
[
{"id":3,"data":{"name":"sysrscols","type":"S "}},
{"id":5,"data":{"name":"sysrowsets","type":"S "}},
{"id":6,"data":{"name":"sysclones","type":"S "}}
]
JSON 절에 대해 배열 래퍼가없는 경우 (출력에서 단일 객체)
WITHOUT_ARRAY_WRAPPER 옵션을 사용하면 배열 대신 단일 객체를 생성 할 수 있습니다. 단일 행 / 객체를 반환한다는 것을 알고있는 경우이 옵션을 사용합니다.
SELECT top 3 object_id, name, type, principal_id
FROM sys.objects
WHERE object_id = 3
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER
이 경우 단일 개체가 반환됩니다.
{"object_id":3,"name":"sysrscols","type":"S "}
INCLUDE_NULL_VALUES
FOR JSON 절은 셀의 NULL 값을 무시합니다. "key": NULL 값을 포함하는 셀에 대해 널 쌍을 생성하려면 쿼리에 INCLUDE_NULL_VALUES 옵션을 추가하십시오.
SELECT top 3 object_id, name, type, principal_id
FROM sys.objects
FOR JSON PATH, INCLUDE_NULL_VALUES
principal_id 열의 NULL 값이 생성됩니다.
[
{"object_id":3,"name":"sysrscols","type":"S ","principal_id":null},
{"object_id":5,"name":"sysrowsets","type":"S ","principal_id":null},
{"object_id":6,"name":"sysclones","type":"S ","principal_id":null}
]
ROOT 객체로 결과 래핑하기
반환 된 JSON 배열을 지정된 키와 함께 추가 루트 객체로 래핑합니다.
SELECT top 3 object_id, name, type FROM sys.objects
FOR JSON PATH, ROOT('data')
쿼리의 결과는 래퍼 객체 안에 JSON 객체 배열입니다.
{
"data":[
{"object_id":3,"name":"sysrscols","type":"S "},
{"object_id":5,"name":"sysrowsets","type":"S "},
{"object_id":6,"name":"sysclones","type":"S "}
]
}
JSON AUTO 용
두 번째 테이블의 값을 JSON 객체의 중첩 된 하위 배열로 자동 중첩합니다.
SELECT top 5 o.object_id, o.name, c.column_id, c.name
FROM sys.objects o
JOIN sys.columns c ON o.object_id = c.object_id
FOR JSON AUTO
쿼리의 결과는 JSON 객체의 배열입니다.
[
{
"object_id":3,
"name":"sysrscols",
"c":[
{"column_id":12,"name":"bitpos"},
{"column_id":6,"name":"cid"}
]
},
{
"object_id":5,
"name":"sysrowsets",
"c":[
{"column_id":13,"name":"colguid"},
{"column_id":3,"name":"hbcolid"},
{"column_id":8,"name":"maxinrowlen"}
]
}
]
사용자 정의 중첩 JSON 구조 만들기
FOR JSON PATH 또는 FOR JSON AUTO를 사용하여 만들 수없는 복잡한 JSON 구조가 필요한 경우 FOR JSON 하위 쿼리를 열 표현식으로 설정하여 JSON 출력을 사용자 정의 할 수 있습니다.
SELECT top 5 o.object_id, o.name,
(SELECT column_id, c.name
FROM sys.columns c WHERE o.object_id = c.object_id
FOR JSON PATH) as columns,
(SELECT parameter_id, name
FROM sys.parameters p WHERE o.object_id = p.object_id
FOR JSON PATH) as parameters
FROM sys.objects o
FOR JSON PATH
각 하위 쿼리는 기본 JSON 콘텐츠에 포함될 JSON 결과를 생성합니다.