📖
PHP json_encode() 옵션 목록
페이지 정보
본문
PHP의 json_encode() 함수는 JSON 변환 시 다양한 플래그(옵션)를 사용할 수 있습니다. 각 옵션은 **비트 플래그(bit flag)**로 동작하며, 여러 개를 비트 OR(|) 연산자를 사용하여 함께 사용할 수 있습니다.
1. JSON_HEX_TAG (1)
<와 > 문자를 \u003C, \u003E로 이스케이프합니다.
XSS(크로스 사이트 스크립팅) 공격 방지에 도움을 줍니다.
예:[code]
echo json_encode("<script>", JSON_HEX_TAG);
[/code]
출력:[code]
"\u003Cscript\u003E"[/code]
2. JSON_HEX_AMP (2)
& 문자를 \u0026으로 변환합니다.
HTML에서 &는 특수문자로 해석될 수 있어 이를 방지합니다.
예:[code]
echo json_encode("Tom & Jerry", JSON_HEX_AMP);[/code]
출력:[code]
"Tom \u0026 Jerry"[/code]
3. JSON_HEX_APOS (4)
'(작은따옴표, apostrophe)를 \u0027로 변환합니다.
JSON에서 작은따옴표를 이스케이프하여 안전하게 저장할 때 사용됩니다.
예:[code]
echo json_encode("I'm fine", JSON_HEX_APOS);
[/code]
출력:[code]
"I\u0027m fine"[/code]
4. JSON_HEX_QUOT (8)
"(큰따옴표)를 \u0022로 변환합니다.
JSON 내에서 따옴표가 깨지는 것을 방지할 때 사용됩니다.
예:[code]
echo json_encode('Hello "World"', JSON_HEX_QUOT);
[/code]
출력:[code]
"Hello \u0022World\u0022"[/code]
5. JSON_FORCE_OBJECT (16)
배열을 JSON 객체로 강제 변환합니다.
기본적으로 PHP에서 연관 배열(키가 있는 배열)은 JSON 객체로 변환되지만, 일반 배열(숫자 키를 가지는 배열)은 JSON 배열로 변환됩니다.
이 옵션을 사용하면 모든 배열을 JSON 객체로 변환합니다.
예:[code]
$arr = ["apple", "banana"];
echo json_encode($arr, JSON_FORCE_OBJECT);[/code]
출력:[code]
{"0":"apple","1":"banana"}[/code]
6. JSON_NUMERIC_CHECK (32)
문자열로 저장된 숫자를 숫자로 변환합니다.
JSON은 기본적으로 모든 값을 문자열로 저장하는데, 숫자 값을 유지하고 싶을 때 사용합니다.
예:[code]
$data = ["age" => "25", "height" => "175"];
echo json_encode($data, JSON_NUMERIC_CHECK);[/code]
출력:[code]
{"age":25,"height":175}[/code]
7. JSON_UNESCAPED_SLASHES (64)
슬래시(/)를 이스케이프하지 않도록 합니다.
기본적으로 json_encode()는 /를 \/로 변환합니다(XSS 공격 방지 목적).
예:[code]
echo json_encode("https://example.com", JSON_UNESCAPED_SLASHES);[/code]
출력:[code]
"https://example.com"[/code]
8. JSON_PRETTY_PRINT (128)
사람이 읽기 쉽게 JSON을 들여쓰기(indent)하여 출력합니다.
예:[code]
$data = ["name" => "John", "age" => 30];
echo json_encode($data, JSON_PRETTY_PRINT);[/code]
출력:[code]
{
"name": "John",
"age": 30
}[/code]
9. JSON_UNESCAPED_UNICODE (256)
유니코드 문자를 이스케이프하지 않고 원래 문자 그대로 출력합니다.
기본적으로 json_encode()는 한글, 일본어, 중국어 등의 문자를 \uXXXX 형식으로 변환합니다.
예:[code]
echo json_encode(["text" => "한글"], JSON_UNESCAPED_UNICODE);[/code]
출력:[code]
{"text":"한글"}[/code]
10. JSON_PARTIAL_OUTPUT_ON_ERROR (512)
JSON 변환 중 오류가 발생해도 가능한 데이터만 출력합니다.
기본적으로 PHP는 변환할 수 없는 데이터(예: NAN, INF 등)를 만나면 false를 반환합니다.
이 옵션을 사용하면 변환할 수 없는 값만 생략하고 나머지는 정상 출력됩니다.
예:[code]
$data = ["value" => NAN, "text" => "hello"];
echo json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR);[/code]
출력:[code]
{"text":"hello"}[/code]
11. JSON_PRESERVE_ZERO_FRACTION (1024)
소수점이 있는 숫자를 정확하게 유지합니다.
기본적으로 json_encode()는 1.0을 1로 변환하지만, 이 옵션을 사용하면 원래 값 그대로 유지됩니다.
예:[code]
echo json_encode(["value" => 1.0], JSON_PRESERVE_ZERO_FRACTION);[/code]
출력:[code]
{"value":1.0}[/code]
12. JSON_UNESCAPED_LINE_TERMINATORS (2048, PHP 7.1 이상)
JSON 내에서 줄바꿈 문자를 그대로 유지하도록 합니다.
기본적으로 JSON은 줄바꿈 문자를 \n 또는 \r로 변환하지만, 이 옵션을 사용하면 원래 형태를 유지합니다.
13. JSON_THROW_ON_ERROR (4194304, PHP 7.3 이상)
JSON 인코딩 중 오류가 발생하면 false를 반환하는 대신 예외(Exception)를 던집니다.
오류를 감지하고 처리할 때 유용합니다.
예:[code]
try {
json_encode("\xB1\x31", JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
echo "JSON Error: " . $e->getMessage();
}[/code]
출력:[code]
JSON Error: Malformed UTF-8 characters, possibly incorrectly encoded[/code]
✅ 옵션 조합 사용 예시
여러 옵션을 조합하여 사용할 수 있습니다. 예를 들어:
[code]
$data = ["text" => "한글", "url" => "https://example.com"];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
[/code]
출력:[code]
{
"text": "한글",
"url": "https://example.com"
}[/code]
이렇게 비트 OR 연산자(|)를 사용하면 여러 기능을 동시에 적용할 수 있습니다.
1. JSON_HEX_TAG (1)
<와 > 문자를 \u003C, \u003E로 이스케이프합니다.
XSS(크로스 사이트 스크립팅) 공격 방지에 도움을 줍니다.
예:[code]
echo json_encode("<script>", JSON_HEX_TAG);
[/code]
출력:[code]
"\u003Cscript\u003E"[/code]
2. JSON_HEX_AMP (2)
& 문자를 \u0026으로 변환합니다.
HTML에서 &는 특수문자로 해석될 수 있어 이를 방지합니다.
예:[code]
echo json_encode("Tom & Jerry", JSON_HEX_AMP);[/code]
출력:[code]
"Tom \u0026 Jerry"[/code]
3. JSON_HEX_APOS (4)
'(작은따옴표, apostrophe)를 \u0027로 변환합니다.
JSON에서 작은따옴표를 이스케이프하여 안전하게 저장할 때 사용됩니다.
예:[code]
echo json_encode("I'm fine", JSON_HEX_APOS);
[/code]
출력:[code]
"I\u0027m fine"[/code]
4. JSON_HEX_QUOT (8)
"(큰따옴표)를 \u0022로 변환합니다.
JSON 내에서 따옴표가 깨지는 것을 방지할 때 사용됩니다.
예:[code]
echo json_encode('Hello "World"', JSON_HEX_QUOT);
[/code]
출력:[code]
"Hello \u0022World\u0022"[/code]
5. JSON_FORCE_OBJECT (16)
배열을 JSON 객체로 강제 변환합니다.
기본적으로 PHP에서 연관 배열(키가 있는 배열)은 JSON 객체로 변환되지만, 일반 배열(숫자 키를 가지는 배열)은 JSON 배열로 변환됩니다.
이 옵션을 사용하면 모든 배열을 JSON 객체로 변환합니다.
예:[code]
$arr = ["apple", "banana"];
echo json_encode($arr, JSON_FORCE_OBJECT);[/code]
출력:[code]
{"0":"apple","1":"banana"}[/code]
6. JSON_NUMERIC_CHECK (32)
문자열로 저장된 숫자를 숫자로 변환합니다.
JSON은 기본적으로 모든 값을 문자열로 저장하는데, 숫자 값을 유지하고 싶을 때 사용합니다.
예:[code]
$data = ["age" => "25", "height" => "175"];
echo json_encode($data, JSON_NUMERIC_CHECK);[/code]
출력:[code]
{"age":25,"height":175}[/code]
7. JSON_UNESCAPED_SLASHES (64)
슬래시(/)를 이스케이프하지 않도록 합니다.
기본적으로 json_encode()는 /를 \/로 변환합니다(XSS 공격 방지 목적).
예:[code]
echo json_encode("https://example.com", JSON_UNESCAPED_SLASHES);[/code]
출력:[code]
"https://example.com"[/code]
8. JSON_PRETTY_PRINT (128)
사람이 읽기 쉽게 JSON을 들여쓰기(indent)하여 출력합니다.
예:[code]
$data = ["name" => "John", "age" => 30];
echo json_encode($data, JSON_PRETTY_PRINT);[/code]
출력:[code]
{
"name": "John",
"age": 30
}[/code]
9. JSON_UNESCAPED_UNICODE (256)
유니코드 문자를 이스케이프하지 않고 원래 문자 그대로 출력합니다.
기본적으로 json_encode()는 한글, 일본어, 중국어 등의 문자를 \uXXXX 형식으로 변환합니다.
예:[code]
echo json_encode(["text" => "한글"], JSON_UNESCAPED_UNICODE);[/code]
출력:[code]
{"text":"한글"}[/code]
10. JSON_PARTIAL_OUTPUT_ON_ERROR (512)
JSON 변환 중 오류가 발생해도 가능한 데이터만 출력합니다.
기본적으로 PHP는 변환할 수 없는 데이터(예: NAN, INF 등)를 만나면 false를 반환합니다.
이 옵션을 사용하면 변환할 수 없는 값만 생략하고 나머지는 정상 출력됩니다.
예:[code]
$data = ["value" => NAN, "text" => "hello"];
echo json_encode($data, JSON_PARTIAL_OUTPUT_ON_ERROR);[/code]
출력:[code]
{"text":"hello"}[/code]
11. JSON_PRESERVE_ZERO_FRACTION (1024)
소수점이 있는 숫자를 정확하게 유지합니다.
기본적으로 json_encode()는 1.0을 1로 변환하지만, 이 옵션을 사용하면 원래 값 그대로 유지됩니다.
예:[code]
echo json_encode(["value" => 1.0], JSON_PRESERVE_ZERO_FRACTION);[/code]
출력:[code]
{"value":1.0}[/code]
12. JSON_UNESCAPED_LINE_TERMINATORS (2048, PHP 7.1 이상)
JSON 내에서 줄바꿈 문자를 그대로 유지하도록 합니다.
기본적으로 JSON은 줄바꿈 문자를 \n 또는 \r로 변환하지만, 이 옵션을 사용하면 원래 형태를 유지합니다.
13. JSON_THROW_ON_ERROR (4194304, PHP 7.3 이상)
JSON 인코딩 중 오류가 발생하면 false를 반환하는 대신 예외(Exception)를 던집니다.
오류를 감지하고 처리할 때 유용합니다.
예:[code]
try {
json_encode("\xB1\x31", JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
echo "JSON Error: " . $e->getMessage();
}[/code]
출력:[code]
JSON Error: Malformed UTF-8 characters, possibly incorrectly encoded[/code]
✅ 옵션 조합 사용 예시
여러 옵션을 조합하여 사용할 수 있습니다. 예를 들어:
[code]
$data = ["text" => "한글", "url" => "https://example.com"];
echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT);
[/code]
출력:[code]
{
"text": "한글",
"url": "https://example.com"
}[/code]
이렇게 비트 OR 연산자(|)를 사용하면 여러 기능을 동시에 적용할 수 있습니다.
댓글목록
등록된 댓글이 없습니다.
![]() ![]() |