json_encode
- data를 json string 으로 변환한다. array, object to json string.
아래는 array 를 json string 으로 encode 하는 예제이다.
<?php
$arr_data = array();
$arr_data["name"] = "muabow";
$arr_data["url"] = "https://muabow.tistory.com";
$arr_data["desc"] = "한글과 공백";
var_dump(json_encode($arr_data));
?>
string(95) "{"name":"muabow","url":"https:\/\/muabow.tistory.com","desc":"\ud55c\uae00\uacfc \uacf5\ubc31"}"
string으로 변환된 것을 확인 할 수있지만 역슬러시(\)가 포함되고 한글은 유니코드로 변경된 것을 확인할 수 있다.
특히 가장 중요한 출력 포맷을 지키지 않고 한줄로 string화 하여 출력되는데 우리는 이러한 문제를 encode flag 를 통해 해결할 수 있다.
json_eoncde 포맷
json_encode(mixed $value, int $flags = 0, int $depth = 512): string|false
flag 목록 중 많이 사용하는 것만 모아본다.
- flag 는 | 를 통하여 복수개를 사용 가능하다. (e.g. JSON_PRETTY_PRINT | JSON_FORCE_OBJECT)
Flag 목록 | 설명 |
JSON_FORCE_OBJECT | array를 강제로 object 형태로 변환한다. |
JSON_HEX_QUOT | double quotaion(") 을 유니코드 \u0027로 인코딩한다. |
JSON_HEX_APOS | single quotation(')을 유니코드 \u0022로 인코딩 한다. |
JSON_PRETTY_PRINT | JSON 포맷으로 indentation 하여 출력한다. |
JSON_UNESCAPED_SLASHES | 슬러시를 표현할 떄 역슬러시(\)를 추가하지 않는다. |
JSON_UNESCAPED_UNICODE | 유니코드 문자로 변환하지 않는다. |
그럼 처음 예제를 원하는데로 변경하기 위해선 다음과 같은 옵션이 필요하다.
1. JSON_PRETTY_PRINT
2. JSON_UNESCAPED_UNICODE
3. JSON_UNESCAPED_SLASHES
<?php
$arr_data = array();
$arr_data["name"] = "muabow";
$arr_data["url"] = "https://muabow.tistory.com";
$arr_data["desc"] = "한글과 공백";
var_dump(json_encode($arr_data, JSON_PRETTY_PRINT|JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES));
?>
string(97) "{
"name": "muabow",
"url": "https://muabow.tistory.com",
"desc": "한글과 공백"
}"
결과를 확인하면 url의 슬러시, 한글, 공백 등 JSON 포맷을 맞춰 출력되는 것을 볼 수 있다.
'IT > web' 카테고리의 다른 글
[PHP] array_walk_recursive와 배열 순회 탐색 소스코드 공유 (0) | 2021.12.28 |
---|---|
[PHP] json_decode 설명과 예제 (0) | 2021.12.28 |
[PHP] file_exists()에 공백이 포함되었을 때 해결 방안 (0) | 2021.12.27 |
[PHP] shell_exec() 한글이 포함된 svn 이 동작하지 않을 때 해결 방안 (0) | 2021.12.27 |
[javascript] jquery multiple select 예제와 소스코드 공유 (0) | 2021.12.26 |
댓글