PHP

PHP에서 JSON 데이터 다루기

thebasics 2024. 9. 6. 10:00

목차
1. JSON이란 무엇인가?
   - JSON의 개념
   - JSON의 사용 사례
2. JSON 인코딩 ('json_encode')
   - PHP 배열을 JSON으로 인코딩하기
   - JSON 인코딩 옵션
3. JSON 디코딩 ('json_decode')
   - JSON 문자열을 PHP 배열로 디코딩하기
   - 객체로 디코딩하기
4. API와의 JSON 통신
   - JSON 데이터를 사용하는 API 요청 만들기
   - API 응답에서 JSON 데이터 처리하기
5. 코드 예제
6. 결론 및 추가 학습 자료


1. JSON이란 무엇인가?

JSON의 개념

JSON(JavaScript Object Notation)은 데이터를 저장하고 전송하는 데 사용되는 경량 데이터 형식입니다. JSON은 텍스트 기반의 형식으로, 사람이 읽기 쉬우며, 데이터 구조를 쉽게 표현할 수 있습니다. JSON은 대부분의 프로그래밍 언어에서 사용할 수 있으며, 특히 웹 애플리케이션에서 클라이언트와 서버 간 데이터 교환에 널리 사용됩니다.

JSON의 사용 사례

- 데이터 교환: 클라이언트와 서버 간의 데이터 전송에 자주 사용됩니다.
- 구성 파일: 설정 데이터를 저장하는 데 사용됩니다.
- API 통신: RESTful API에서 요청 및 응답 형식으로 사용됩니다.
- 데이터 저장: 간단한 데이터 구조를 로컬에 저장하는 데 사용됩니다.


2. JSON 인코딩 ('json_encode')

PHP 배열을 JSON으로 인코딩하기

PHP에서 JSON 데이터를 생성하려면 'json_encode' 함수를 사용합니다. 이 함수는 PHP 배열이나 객체를 JSON 문자열로 변환합니다.

<?php
$data = array(
    "name" => "LearnCode",
    "age" => 30,
    "email" => "Learn@example.com"
);

$jsonData = json_encode($data);
echo $jsonData;
?>

이 예제에서 PHP 배열 '$data'를 'json_encode' 함수를 사용하여 JSON 문자열로 변환합니다. 출력 결과는 다음과 같습니다:

{"name":"LearnCode","age":30,"email":"Learn@example.com"}

JSON 인코딩 옵션

'json_encode' 함수는 다양한 옵션을 제공하여 인코딩 동작을 제어할 수 있습니다. 예를 들어, JSON을 사람이 읽기 쉽게 포맷하거나, 유니코드를 이스케이프하지 않도록 설정할 수 있습니다.

<?php
$data = array(
    "name" => "LearnCode",
    "age" => 30,
    "email" => "Learn@example.com"
);

$jsonData = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo $jsonData;
?>

이 예제에서는 'JSON_PRETTY_PRINT' 옵션을 사용하여 JSON을 들여쓰기된 형태로 출력하고, 'JSON_UNESCAPED_UNICODE' 옵션을 사용하여 유니코드를 이스케이프하지 않습니다.

출력 결과:

{
    "name": "LearnCode",
    "age": 30,
    "email": "Learn@example.com"
}

3. JSON 디코딩 ('json_decode')

JSON 문자열을 PHP 배열로 디코딩하기

서버에서 JSON 데이터를 수신하면, 이를 PHP에서 사용할 수 있도록 디코딩해야 합니다. 'json_decode' 함수는 JSON 문자열을 PHP 배열이나 객체로 변환합니다.

<?php
$jsonData = '{"name":"LearnCode","age":30,"email":"Learn@example.com"}';

$arrayData = json_decode($jsonData, true);
print_r($arrayData);
?>

이 예제에서는 JSON 문자열 '$jsonData'를 'json_decode' 함수로 디코딩하여 PHP 배열로 변환합니다. 출력 결과는 다음과 같습니다:

Array
(
    [name] => LearnCode
    [age] => 30
    [email] => Learn@example.com
)

객체로 디코딩하기

'json_decode' 함수에서 두 번째 인수를 'false'로 설정하거나 생략하면, JSON 데이터는 PHP 객체로 디코딩됩니다.

<?php
$jsonData = '{"name":"LearnCode","age":30,"email":"Learn@example.com"}';

$objectData = json_decode($jsonData);
echo $objectData->name . "\n";
echo $objectData->age . "\n";
echo $objectData->email . "\n";
?>

이 예제에서는 JSON 문자열을 PHP 객체로 디코딩하고, 객체의 속성에 접근하여 데이터를 출력합니다.


4. API와의 JSON 통신

JSON 데이터를 사용하는 API 요청 만들기

PHP에서는 'cURL'이나 'file_get_contents'를 사용하여 외부 API에 요청을 보낼 수 있습니다. 요청 데이터가 JSON 형식이어야 할 경우, 'json_encode'를 사용하여 데이터를 JSON으로 변환한 후, 이를 HTTP 요청의 본문에 포함시킵니다.

<?php
$url = "https://api.example.com/data";
$data = array(
    "name" => "LearnCode",
    "age" => 30,
    "email" => "Learn@example.com"
);

$options = array(
    'http' => array(
        'header'  => "Content-type: application/json\r\n",
        'method'  => 'POST',
        'content' => json_encode($data),
    ),
);

$context  = stream_context_create($options);
$response = file_get_contents($url, false, $context);
echo $response;
?>

이 예제에서는 'file_get_contents'를 사용하여 API에 JSON 데이터를 POST 요청으로 전송합니다. 요청 헤더에 'Content-type: application/json'을 지정하고, 요청 본문에 JSON 데이터를 포함시킵니다.

API 응답에서 JSON 데이터 처리하기

API로부터 응답을 받으면, 응답 데이터를 JSON 형식으로 디코딩하여 사용할 수 있습니다.

<?php
$response = '{"status":"success","data":{"id":123,"name":"LearnCode"}}';

$responseData = json_decode($response, true);
if ($responseData['status'] == 'success') {
    echo "ID: " . $responseData['data']['id'] . "\n";
    echo "Name: " . $responseData['data']['name'] . "\n";
}
?>

이 예제에서는 API 응답을 JSON 문자열로 받고, 이를 디코딩하여 PHP 배열로 변환한 후, 응답 데이터를 출력합니다.


5. 코드 예제

PHP에서 JSON 데이터를 인코딩하고 디코딩하며, API와의 통신을 처리하는 종합적인 예제를 작성해보겠습니다.

<?php
// 데이터 배열을 JSON으로 인코딩
$userData = array(
    "name" => "LearnCode",
    "age" => 30,
    "email" => "Learn@example.com"
);
$jsonData = json_encode($userData, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
echo "JSON 인코딩 결과:\n" . $jsonData . "\n\n";

// JSON 문자열을 PHP 배열로 디코딩
$jsonString = '{"name":"LearnCode","age":30,"email":"Learn@example.com"}';
$arrayData = json_decode($jsonString, true);
echo "PHP 배열로 디코딩:\n";
print_r($arrayData);

// API 요청을 위한 JSON 데이터 생성 및 전송 (실제 API는 테스트 필요)
$url = "https://api.example.com/data";
$options = array(
    'http' => array(
        'header'  => "Content-type: application/json\r\n",
        'method'  => 'POST',
        'content' => $jsonData,
    ),
);

$context  = stream_context_create($options);
$response = file_get_contents($url, false, $context);

// API 응답 처리
$responseData = json_decode($response, true);
if ($responseData['status'] == 'success') {
    echo "API 응답 처리:\n";
    echo "ID: " . $responseData['data']['id'] . "\n";
    echo "Name: " . $responseData['data']['name'] . "\n";
}
?>

코드 분석:
- 'json_encode'를 사용하여 PHP 배열을 JSON 문자열로 변환하고 출력합니다.
- 'json_decode

'를 사용하여 JSON 문자열을 PHP 배열로 변환하고 출력합니다.
- 'file_get_contents'를 사용하여 JSON 데이터를 API로 전송하고, 응답을 처리합니다.


6. 결론 및 추가 학습 자료

이번 글에서는 PHP에서 JSON 데이터를 다루는 방법에 대해 알아보았습니다. JSON은 데이터 교환에 널리 사용되는 형식으로, PHP에서 쉽게 인코딩하고 디코딩할 수 있습니다. 또한, API와의 통신에서 JSON 데이터를 효과적으로 처리하여 다양한 애플리케이션을 구현할 수 있습니다.

추가 학습 자료:
- [PHP 공식 문서 - JSON 함수](https://www.php.net/manual/en/book.json.php) PHP에서 제공하는 JSON 처리 함수에 대한 공식 문서입니다.
- [W3Schools PHP JSON 튜토리얼](https://www.w3schools.com/php/php_json.asp) PHP에서 JSON을 사용하는 방법을 다루는 튜토리얼입니다.
- [GeeksforGeeks PHP JSON](https://www.geeksforgeeks.org/how-to-parse-a-json-file-in-php/) 다양한 PHP JSON 사용 예제를 제공합니다.


이제 PHP에서 JSON을 다루는 기본 개념을 이해했으니, 이를 바탕으로 더 복잡한 데이터 처리와 API 통신을 구현할 수 있습니다. 지속적인 학습을 통해 PHP의 모든 가능성을 탐구해보시길 바랍니다!

반응형