PHP JSON 데이터 처리 (Handling JSON Data)
JSON 개요
JSON(JavaScript Object Notation)은 경량의 데이터 교환 형식으로, 사람과 기계 모두가 이해하기 쉽습니다. PHP에서는 JSON 데이터를 생성하고 파싱하여 다룰 수 있는 여러 함수와 메서드를 제공합니다.
JSON 데이터 생성 (Encoding)
PHP에서는 json_encode()
함수를 사용하여 PHP 배열이나 객체를 JSON 형식의 문자열로 변환할 수 있습니다.
예제: 배열을 JSON 문자열로 인코딩하기
<?php // PHP 배열 생성 $data = array( 'name' => 'John Doe', 'age' => 30, 'city' => 'New York' ); // 배열을 JSON 문자열로 변환 $jsonString = json_encode($data); // JSON 출력 echo $jsonString; ?>
위 예제에서는 PHP 배열을 JSON으로 인코딩하여 $jsonString
에 저장하고, 이를 출력합니다.
JSON 데이터 파싱 (Decoding)
반대로, PHP에서는 json_decode()
함수를 사용하여 JSON 형식의 문자열을 PHP 배열이나 객체로 변환할 수 있습니다.
예제: JSON 문자열을 배열로 디코딩하기
<?php // JSON 형식의 문자열 $jsonString = '{"name":"John Doe","age":30,"city":"New York"}'; // JSON 문자열을 PHP 배열로 변환 $data = json_decode($jsonString, true); // true를 설정하면 배열 형태로 변환됩니다. // 배열 출력 print_r($data); ?>
위 예제에서는 JSON 문자열 $jsonString
을 PHP 배열로 디코딩하여 $data
에 저장하고, print_r()
함수를 사용하여 배열을 출력합니다.
JSON 예제: Ajax와 PHP에서 JSON 데이터 주고받기
이 예제는 Ajax를 사용하여 클라이언트에서 JSON 데이터를 PHP로 보내고, PHP에서 JSON 데이터를 처리하여 다시 클라이언트로 반환하는 방법을 보여줍니다.
클라이언트 측 (JavaScript)
// Ajax 요청을 생성하고 JSON 데이터를 PHP 서버로 보내며, 응답을 처리하는 JavaScript 코드 예제 // XMLHttpRequest 객체 생성 var xhttp = new XMLHttpRequest(); // 서버 URL 및 요청 메서드 설정 var url = "server.php"; var method = "POST"; // 보낼 JSON 데이터 준비 var data = { name: "John Doe", age: 30, city: "New York" }; // JSON 데이터를 문자열로 변환 var jsonString = JSON.stringify(data); // Ajax 요청 설정 xhttp.open(method, url, true); xhttp.setRequestHeader("Content-type", "application/json"); // 요청 완료 후 처리할 콜백 함수 설정 xhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { // 서버에서 받은 JSON 데이터 파싱 var response = JSON.parse(this.responseText); // 결과 출력 예제 (여기서는 콘솔에 출력) console.log("서버에서 받은 결과: " + response.result); } }; // JSON 데이터 전송 xhttp.send(jsonString);
서버 측 (PHP)
<?php // PHP에서 JSON 데이터를 받아 처리하고 JSON 형식으로 응답하는 예제 // POST 메서드로 전송된 JSON 데이터 받기 $jsonData = file_get_contents('php://input'); // JSON 데이터를 PHP 배열로 디코딩 $data = json_decode($jsonData, true); // true를 설정하면 배열 형태로 변환됩니다. // 처리할 로직 구현 예제 (여기서는 받은 데이터를 대문자로 변환하여 반환하는 예제) $result = strtoupper($data['name']); // 결과를 JSON 형식으로 반환 echo json_encode(array('result' => $result)); ?>
위 예제에서는 클라이언트에서 생성한 JSON 데이터를 PHP 서버로 전송하여 file_get_contents('php://input')
을 사용하여 받고, 이를 JSON 디코딩하여 처리하고 다시 JSON 형식으로 반환합니다.
JSON 데이터는 PHP와 JavaScript 사이의 데이터 교환에서 매우 유용하게 사용됩니다. JSON을 이용하면 데이터를 효율적으로 교환하고, 데이터의 형식이나 구조를 쉽게 변경할 수 있습니다.