>백엔드 개발 >PHP 튜토리얼 >PHP에서 JSON 데이터를 구문 분석하는 방법

PHP에서 JSON 데이터를 구문 분석하는 방법

青灯夜游
青灯夜游원래의
2018-11-15 11:11:5235310검색

PHP는 JSON 데이터를 어떻게 구문 분석하나요? 이 글에서는 PHP에서 JSON 데이터를 파싱하는 기본적인 방법, 즉 JSON 데이터를 인코딩하고 디코딩하는 방법을 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

우선 이해해보자 JSON이란?

JSON은 빠르고 쉽게 구문 분석하고 생성할 수 있는 표준 경량 데이터 교환 형식입니다.

XML과 마찬가지로 JSON은 작성하기 쉽고 이해하기 쉬운 텍스트 기반 형식이지만 XML과 달리 JSON 데이터 구조는 XML 버전보다 대역폭을 덜 차지합니다. JSON은 두 가지 기본 구조를 기반으로 합니다.

객체: 은 키/값 쌍(예: 키:값)의 모음으로 정의되며, 각 객체 앞에는 여는 문자가 옵니다. 중괄호 "{ "오른쪽 중괄호 "}"로 시작하고 여러 키/값 쌍은 쉼표 ","로 구분됩니다.

Array: 은 순서가 지정된 값 목록으로 정의됩니다. 배열은 왼쪽 대괄호 "["로 시작하고 오른쪽 대괄호 "]"로 끝납니다. 쉼표 ","로 시작합니다.

JSON에서 키는 항상 문자열이고 값은 문자열, 숫자, true 또는 false, null 또는 객체나 배열일 수 있습니다. 문자열은 큰따옴표로 묶어야 하며 n, t 및 와 같은 이스케이프 문자를 포함할 수 있습니다. JSON 객체는 다음과 같습니다:

{
    "book": {
        "name": "PHP 从入门到精通",
        "author": "明日科技",
        "year": 2017,
        "type": "php编程",
        "bestseller": true
     }
}

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

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

JSON의 데이터 구조가 매우 유사하다는 것을 알 수 있습니다. PHP 배열의 것과 같습니다. php가 JSON 데이터를 어떻게 파싱하는지 알아볼까요?

PHP에는 JSON 데이터를 인코딩하고 디코딩하는 데 사용할 수 있는 내장 함수가 있습니다. 이러한 함수는 json_encode() 함수와 json_decode() 함수로 구현될 수 있습니다. 참고: 이 두 함수는 UTF-8로 인코딩된 문자열 데이터에만 적용됩니다.

PHP에서 JSON 데이터 인코딩

PHP에서는 json_encode() 함수를 사용하여 값을 JSON 형식으로 인코딩합니다. 인코딩된 값은 데이터베이스나 파일 핸들과 같은 리소스를 제외한 모든 PHP 데이터 유형이 될 수 있습니다. 다음 예에서는 PHP 연관 배열을 JSON 개체로 인코딩하는 방법을 보여줍니다.

<?php
  // 关联数组
  $marks = array("Peter"=>65, "Harry"=>80, "John"=>78, "Clark"=>90);
   echo json_encode($marks);
?>

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

PHP에서 JSON 데이터를 구문 분석하는 방법#🎜🎜 ##🎜🎜 #마찬가지로 PHP 인덱스 배열을 JSON 배열로 인코딩할 수 있습니다. 예:

<?php
  // 索引数组
  $colors = array("红", "绿", "蓝", "橙", "黄");
  echo json_encode($colors);
?>

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

# 🎜🎜#다음 예와 같이 JSON_FORCE_OBJECT 옵션을 사용하여 json_encode() 함수가 PHP 인덱스 배열을 JSON 객체로 반환하도록 강제할 수도 있습니다. PHP에서 JSON 데이터를 구문 분석하는 방법

<?php
  // 索引数组
  $colors = array("红", "绿", "蓝", "橙");
  echo json_encode($colors, JSON_FORCE_OBJECT);
?>
# 🎜🎜#위 예제의 출력은 다음과 같습니다:

# 🎜🎜#

위 예제에서 볼 수 있듯이 비연관 배열은 배열 또는 사물. 그러나 연관 배열은 항상 객체로 인코딩됩니다.

PHP에서 JSON 데이터를 구문 분석하는 방법PHP로 JSON 데이터 디코딩

JSON 데이터 디코딩은 인코딩만큼 쉽습니다. PHP json_decode() 함수를 사용하여 JSON으로 인코딩된 문자열을 적절한 PHP 데이터 유형으로 변환할 수 있습니다. 다음 예제에서는 JSON 개체를 PHP 개체로 디코딩하거나 변환하는 방법을 보여줍니다.

<?php
// 在PHP变量中存储JSON数据
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
var_dump(json_decode($json));
?>
위 예제의 출력은 다음과 같습니다.

기본적으로 json_decode() 함수는 다음을 반환합니다. 객체 . 그러나 JSON 객체가 true로 설정된 경우 연관 배열로 디코딩될 부울 값을 허용하는 두 번째 매개변수 $assoc를 지정하도록 선택할 수도 있습니다. 예를 살펴보겠습니다.

<?php
// 在PHP变量中存储JSON数据
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
var_dump(json_decode($json, true));
?>

위 예의 출력은 다음과 같습니다. PHP에서 JSON 데이터를 구문 분석하는 방법

이제 살펴보겠습니다. JSON 데이터를 디코딩하고 PHP에서 JSON 개체 또는 배열의 개별 요소에 액세스하는 방법을 보여주는 또 다른 예입니다.

<?php
// 将JSON编码的字符串分配给PHP变量
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
// 将JSON数据解码为PHP关联数组
$arr = json_decode($json, true);
// Access values from the associative array
echo $arr["Peter"];  // Output: 65
echo $arr["Harry"];  // Output: 80
echo $arr["John"];   // Output: 78
echo $arr["Clark"];  // Output: 90
 
// 将JSON数据解码为PHP对象
$obj = json_decode($json);
// 返回对象的访问值
echo $obj->Peter;   // Output: 65
echo $obj->Harry;   // Output: 80
echo $obj->John;    // Output: 78
echo $obj->Clark;   // Output: 90
?>

위 예제의 출력은 다음과 같습니다. PHP에서 JSON 데이터를 구문 분석하는 방법

foreach()를 사용하여 반복할 수도 있습니다. 디코딩된 데이터는 아래와 같습니다.

<?php
// 将JSON编码的字符串分配给PHP变量
$json = &#39;{"Peter":65,"Harry":80,"John":78,"Clark":90}&#39;;
 
// 将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 데이터를 구문 분석하는 방법

요약: 위 내용은 이 글의 모든 내용을 요약한 것이며, 모든 분들의 공부에 도움이 되기를 바랍니다.

위 내용은 PHP에서 JSON 데이터를 구문 분석하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.