제목:

PHP로 JSON 파일 만들기

날짜: Posted on

이 포스트에서는 PHP로 JSON 파일을 만드는 방법을 소개합니다.

JSON 파일 만들기는 XML 파일 만드는 방법과 비슷하지만 프로그래밍 코드는 더 간단합니다. 다음과 같습니다.

<?php
// Data
$members = array('소원', '예린', '은하', '유주', '신비', '엄지');
$albums = array('EP 1집'=>'Season of Glass', 'EP 2집'=>'Flower Bud',
                'EP 3집'=>'Snowflake', '정규 1집'=>'LOL');

$group_data = array('name'=>'여자친구');
$group_data['members'] = $members;
$group_data['albums'] = $albums;

// Print
$output_data = json_encode($group_data, JSON_UNESCAPED_UNICODE);

Header('Content-Type: application/json');
print($output_data);
?>

이 블로그의 PHP로 간단한 XML 파일 만들기 포스트에서 예로 든 것과 같이 걸그룹 여자친구에 대한 간단한 정보를 JSON 파일로 만드는 예제입니다. 코드를 설명하자면 다음과 같습니다.

3번 줄부터 5번 줄까지는 배열 데이터로 처리할 값들을 미리 대입해 두는 코드입니다. $members 배열은 일반적인 배열 형태로 각 멤버 이름을 나열하여 대입하고, $albums 배열은 ‘EP 1집’이라는 키값을 갖는 ‘Season of Glass’를 대입하는 식으로 키값을 갖는 연관배열 형태로 앨범 이름을 대입합니다.

7번 줄은 JSON 형태로 저장할 배열을 정의하면서 그와 동시에 그룹의 이름이 ‘여자친구’임을 명시하는 의미로 ‘name’이라는 키값에 ‘여자친구’라는 데이터값을 먼저 대입합니다. 그 다음엔 앞에서 정의해 놓은 멤버 목록과 앨범 목록을 넣습니다. 8번 줄에서 ‘members’라는 키값으로 멤버 목록 배열을 대입하고, 9번 줄에서는 ‘albums’라는 키값으로 앨범 목록 배열을 대입합니다.

이제 대입된 데이터를 JSON 문서로 변환하는 과정이 남았습니다. 그러기 위해서 12번 줄에서 json_encode 함수에다가 데이터가 담긴 $group_data 배열을 대입하여 $output_data라는 이름의 데이터를 생성합니다. 여기서 추가적인 값으로 JSON_UNESCAPED_UNICODE 옵션을 넣는데, 이 옵션은 유니코드를 이스케이프 문자로 변환하지 않는 옵션입니다. 이 옵션을 주지 않으면 이 예제의 경우 ‘여자친구’가 ‘\uc5ec\uc790\uce5c\uad6c’로 변환되어 버립니다. 따라서 JSON_UNESCAPED_UNICODE 옵션을 넣어서 유니코드 문자가 그대로 출력되게 하는 것입니다. 만약 유니코드 문자를 이스케이프 문자로 변환해야 한다면 이 옵션을 넣지 않으면 됩니다. 14번 줄은 XML 생성할 때와 마찬가지로 헤더를 삽입하는 코드입니다. 이제 15번 줄과 같이 JSON 형식으로 인코딩된 $output_data를 print 또는 echo 문으로 출력하면 완료됩니다.

그 결과는 다음과 같습니다.

{"name":"여자친구","members":["소원","예린","은하","유주","신비","엄지"],"albums":{"EP 1집":"Season of Glass","EP 2집":"Flower Bud","EP 3집":"Snowflake","정규 1집":"LOL"}}

데이터가 JSON 문서로 변환되어 있는 것을 알 수 있습니다. 하지만 코드가 한 줄에 뭉쳐 있습니다. 이를 컴퓨터는 문제없이 읽을 수 있지만 사람이 읽기는 어려워집니다. 이 문제를 해결하려면,

// Print
$output_data = json_encode($group_data, JSON_UNESCAPED_UNICODE + JSON_PRETTY_PRINT);

이와 같이 json_encode 옵션에 JSON_PRETTY_PRINT 옵션을 추가하면 됩니다. 그러면,

{
    "name": "여자친구",
    "members": [
        "소원",
        "예린",
        "은하",
        "유주",
        "신비",
        "엄지"
    ],
    "albums": {
        "EP 1집": "Season of Glass",
        "EP 2집": "Flower Bud",
        "EP 3집": "Snowflake",
        "정규 1집": "LOL"
    }
}

보는 바와 같이 줄이 나눠지고 자동으로 들여쓰기가 되면서 읽기가 쉬워졌습니다.

이렇게 해서 PHP로 JSON 문서를 간단히 만들어 볼 수 있습니다.

※한글이 깨질 경우: urldecode 함수를 사용하면 됩니다.

1개의 댓글이 있습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다