English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

PHP 기본 튜토리얼

PHP 고급 튜토리얼

PHP & MySQL

PHP 참조 매뉴얼

PHP JSON 분석

이 튜토리얼에서는 PHP에서 JSON 데이터를 인코딩하고 디코딩하는 방법을 배울 것입니다.

JSON이 무엇인가요

JSON을 표현 JavaScript Object Notation

JSON과 XML과 마찬가지로 JSON은 텍스트 기반의 형식으로, 인간과 컴퓨터 모두에게 쉽게 작성하고 이해할 수 있지만, XML과 달리 JSON 데이터 구조가 사용하는 대역폭은 XML 버전보다 적습니다. JSON은 두 가지 기본 구조를 기반으로 합니다:

  • 객체:이는 키로 정의됩니다/값 쌍(즉 key:value)의 집합입니다. 각 객체는 왼쪽 괄호{으로 시작되고 오른쪽 괄호}로 끝납니다。 여러 개의 키/값 쌍은 쉼표로 구분됩니다,。

  • 배열:정의된 값을 가진 순서대로 정렬된 목록입니다. 배열은 왼쪽 괄호로 시작하여 오른쪽 괄호[로 끝납니다]. 값은 쉼표로 구분됩니다,.

JSON에서 키는 항상 문자열이며, 값은stringnumbertrue또는falsenull또는object또는array문자열은 양쪽의 괄호("")로 묶여야하며, \ , \ 및 \.와 같은逃脱 문자를 포함할 수 있습니다. JSON 객체는 다음과 같이 보일 수 있습니다:

{
    "book": {
        "name": "Harry Potter and the Goblet of Fire",
        "author": "J. K. Rowling",
        "year": 2000,
        "genre": "Fantasy Fiction",
        "bestseller": true
    }
}

JSON 배열의 예제는 다음과 같습니다:

{
    "fruits": [
        "Apple",
        "Banana",
        "Strawberry",
        "Mango"
    ]
}

ヒント:데이터 교환 형식은 다른 플랫폼과 운영 체제 간 데이터를 교환하거나 교환하기 위한 텍스트 형식입니다. JSON은 웹 애플리케이션에서 가장 인기 있고 가벼운 데이터 교환 형식입니다.

PHP가 JSON을 분석

JSON 데이터 구조는 PHP 배열과 매우 유사합니다. PHP는 내장 함수를 사용하여 JSON 데이터를 인코딩하고 디코딩할 수 있습니다. 이 함수는 json_encode()과 json_decode()입니다. 이 두 함수는 UTF-8을 사용해야 합니다.-8인코딩된 문자 데이터.

PHP로 JSON 데이터 인코딩

PHP에서 json_encode() 함수는 값이 JSON 형식으로 인코딩됩니다. 인코딩된 값은 자원을 제외한 모든 값이 될 수 있습니다.PHP 데이터 타입예를 들어 데이터베이스나 파일 핸들러. 다음 예제에서 PHP 데이터 타입을 JSON으로 변환하는 방법을 보여줍니다.PHP 관련 배열JSON 객체로 인코딩됩니다:

<?php
//관련 배열
$marks = array("Peter"=>65, "Harry":80, "John":78, "Clark":90);
 
echo json_encode($marks);
?>
테스트 봐‹/›

위 예제의 출력은 다음과 같이 될 것입니다:

{"Peter":65,"Harry":80,"John":78,"Clark":90}

동일하게, 다음과 같은 것을 인코딩할 수 있습니다.PHP 인덱스 배열JSON 배열로 인코딩된 것처럼 보입니다:

<?php
//인덱스 배열
$colors = array("Red", "Green", "Blue", "Orange", "Yellow");
 
echo json_encode($colors);
?>
테스트 봐‹/›

위 예제의 출력은 다음과 같이 될 것입니다:

["Red","Green","Blue","Orange","Yellow"]

JSON_FORCE_OBJECT 옵션을 사용하여 json_encode() 함수를 사용하여 PHP 인덱스 배열을 JSON 객체로 강제로 반환할 수 있습니다. 다음 예제에서 보여줍니다:

<?php
//인덱스 배열
$colors = array("Red", "Green", "Blue", "Orange", "Yellow");
 
echo json_encode($colors, JSON_FORCE_OBJECT);
?>
테스트 봐‹/›

위 예제의 출력은 다음과 같이 될 것입니다:

 {"0":"Red","1:"Green",2:"Blue",3:"Orange"}

위 예제에서 볼 수 있듯이, 비관련 배열은 배열이나 객체로 인코딩될 수 있습니다. 그러나 관련 배열은 항상 객체로 인코딩됩니다.

PHP로 JSON 데이터 디코딩

JSON 데이터를 디코딩하는 것은 인코딩과 같이 간단합니다. PHP json_decode() 함수를 사용하여 JSON 인코딩된 문자열을 적절한 PHP 데이터 타입으로 변환할 수 있습니다. 다음 예제에서 JSON 객체를 디코딩하거나 변환하는 방법을 보여줍니다.PHP 객체

<?php
//JSON 데이터를 PHP 변수에 저장합니다
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
var_dump(json_decode($json));
?>
테스트 봐‹/›

위 예제의 출력은 다음과 같습니다:

object(stdClass)#1 (4) { ["Peter"]=> int(65) ["Harry"]=> int(8) ["John"]=> int(78) ["Clark"]=> int(90)}

기본적으로, json_decode() 함수는 객체를 반환합니다. 하지만, 두 번째 파라미터 $assoc을 지정할 수 있습니다. 이 파라미터는 불리언 값을 받아들입니다. true로 설정하면 JSON 객체가 연관 배열로 디코딩됩니다. 기본적으로 false입니다. 다음은 예제입니다:}}

<?php
//JSON 데이터를 PHP 변수에 저장합니다
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
var_dump(json_decode($json, true));
?>
테스트 봐‹/›

위 예제의 출력은 다음과 같습니다:

array(4) { ["Peter"]=> int(65) ["Harry"]=> int(8) ["John"]=> int(78) ["Clark"]=> int(90)}

이제, JSON 데이터를 디코딩하고 PHP에서 JSON 객체나 배열의 각 요소에 접근하는 방법을 보여주는 예제를 볼 것입니다.

<?php
//JSON编码의 문자열을 PHP 변수에 할당합니다
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
//JSON 데이터를 PHP 관계 배열로 디코딩합니다
$arr = json_decode($json, true);
//관계 배열에서 값을 접근합니다
echo $arr["Peter"];  //출력: 65
echo $arr["Harry"];  //출력: 80
echo $arr["John"];   //출력: 78
echo $arr["Clark"];  //출력: 90
 
//JSON 데이터를 PHP 객체로 디코딩합니다
$obj = json_decode($json);
//반환된 객체에서 값을 접근합니다
echo $obj;->Peter;   //출력: 65
echo $obj;->Harry;   //출력: 80
echo $obj;->John;    //출력: 78
echo $obj;->Clark;   //출력: 90
?>
테스트 봐‹/›

다음과 같이 사용할 수 있습니다foreach()다음과 같이 디코딩된 데이터를 반복적으로 순회합니다:

<?php
//JSON编码의 문자열을 PHP 변수에 할당합니다
$json = '{"Peter":65,"Harry":80,"John":78,"Clark":90}';
 
//JSON 데이터를 PHP 관계 배열로 디코딩합니다
$arr = json_decode($json, true);
 
//관계 배열을 순회합니다
foreach($arr as $key=>$value){
    echo $key . "=>" . $value . "<br>";
}
echo "<hr>";
//JSON 데이터를 PHP 객체로 디코딩합니다
$obj = json_decode($json);
 
//객체를 순회합니다
foreach($obj as $key => $value){
    echo $key . "=>" . $value . "<br>";
}
?>
테스트 봐‹/›

PHP의 내장된 JSON 데이터에서 값을 추출합니다

JSON 객체와 배열도 내장될 수 있습니다. JSON 객체는 다른 JSON 객체, 배열, 내장 배열, JSON 객체 배열 등을 자유롭게 포함할 수 있습니다. 다음 예제는 내장된 JSON 객체를 디코딩하여 PHP에서 모든 값을 출력하는 방법을 보여줍니다.

<?php
//내장 값을 추출하기 위한 재귀 함수를 정의합니다
function printValues($arr) {
    global $count;
    global $values;
    
    //입력이 배열인지 확인합니다
    if(!is_array($arr)){
        die("에러: 입력이 배열이 아닙니다.");
    }
    
    /*
        배열을 순회하면, value 자체가 배열이면 재귀적으로 호출됩니다.       
        함수는 발견된 값을 출력 항목 배열에 추가합니다,        
        발견된 각 값에 대해 카운터를 증가시킵니다1
    */
    foreach($arr as $key=>$value){
        if(is_array($value)){
            printValues($value);
        } else{
            $values[] = $value;
            $count++;
        }
    }
    
    // 배열에서 찾은 총 갯수와 값을 반환합니다
    return array('total' => $count, 'values' => $values);
}
 
//JSON编码의 문자열을 PHP 변수에 할당합니다
$json = '{
    "book": {
        "name": "Harry Potter and the Goblet of Fire",
        "author": "J. K. Rowling",
        "year": 2000,
        "characters": ["Harry Potter", "Hermione Granger", "Ron Weasley"],
        "genre": "Fantasy Fiction",
        "price": {
            "paperback": "$10.40", "hardcover": "$20.32", "kindle": "4.11"
        }
    }
}';
//JSON 데이터를 PHP 연관 배열 형식으로 디코딩합니다
$arr = json_decode($json, true);
 
//이 함수를 호출하고 모든 값을 출력합니다
$result = printValues($arr);
echo "<h3>" . $result["total"] . " value(s) found: </h3>";
echo implode("<br>", $result["values"]);
 
echo "<hr>";
 
//값을 출력합니다
echo $arr["book"]["author"] . "<br>";  //출력: J. K. Rowling
echo $arr["book"]["characters"][0] . "<br>";  //출력: Harry Potter
echo $arr["book"]["price"]["hardcover"];  //출력: $20.32
?>
테스트 봐‹/›