[PHP] json_encode

[PHP] json_encode

728x90

반응형

json_encode

- data를 json string 으로 변환한다. array, object to json string.

아래는 array 를 json string 으로 encode 하는 예제이다.

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

string(97) "{ "name": "muabow", "url": "https://muabow.tistory.com", "desc": "한글과 공백" }"

결과를 확인하면 url의 슬러시, 한글, 공백 등 JSON 포맷을 맞춰 출력되는 것을 볼 수 있다.

728x90

반응형

from http://muabow.tistory.com/212 by ccl(A) rewrite - 2021-12-27 23:26:42