목차
json_decode와 json_encode는 모두 json 문자열입니다. 이 글은 주로 PHP에서 json_decode와 json_encode를 사용하는 방법을 공유합니다.
1.json_encode()
인덱스 배열 및 연관 배열
class 변환
2.json_decode()
json_decode() 일반적인 실수
3. JavaScript는 json 문자열을 사용합니다
백엔드 개발 PHP 튜토리얼 PHP에서 json_decode 및 json_encode 사용 방법 공유

PHP에서 json_decode 및 json_encode 사용 방법 공유

Mar 01, 2018 pm 02:05 PM
decode encode javascript

json_decode와 json_encode는 모두 json 문자열입니다. 이 글은 주로 PHP에서 json_decode와 json_encode를 사용하는 방법을 공유합니다.

1.json_encode()

이 함수는 주로 배열과 객체를 json 형식으로 변환하는 데 사용됩니다. 먼저 배열 변환의 예를 살펴보세요.

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);  echo json_encode($arr); 
로그인 후 복사

결과는

{"a":1,"b":2,"c":3,"d":4,"e":5} 
로그인 후 복사

입니다. 그런 다음 객체 변환의 예를 살펴보세요.

$obj->body      = 'another post';  $obj->id       = 21;  $obj->approved    = true;  $obj->favorite_count = 1;  $obj->status     = NULL;  
echo json_encode($obj); 
로그인 후 복사

결과는

{    
    "body":"another post",  
  "id":21,  
  "approved":true,  
  "favorite_count":1,  
  "status":null  
  }
로그인 후 복사

입니다. json은 utf-8로 인코딩된 문자만 허용하므로 json_encode의 매개변수는 ()는 UTF-8 인코딩이어야 합니다. 그렇지 않으면 빈 문자 또는 null이 발생합니다. 중국어가 GB2312 인코딩을 사용하거나 외국어가 ISO-8859-1 인코딩을 사용하는 경우 이 점에 특별한 주의를 기울여야 합니다.

인덱스 배열 및 연관 배열

PHP는 두 가지 유형의 배열을 지원합니다. 하나는 "값"(값)만 저장하는 인덱스 배열이고 다른 하나는 "이름/값 쌍"을 저장하는 배열입니다.

javascript는 연관 배열을 지원하지 않기 때문에 json_encode()는 인덱스 배열만 배열 형식으로 변환하고 연관 배열은 객체 형식으로 변환합니다.

예를 들어, 이제 인덱스 배열이 있습니다

$arr = Array('one', 'two', 'three');  echo json_encode($arr); 
로그인 후 복사

결과는 다음과 같습니다:

["one","two","3"]

이를 연관 배열로 변경하면:

$arr = Array('1'=>'one', '2'=>'two', '3'=>'three');echo json_encode($arr); 
로그인 후 복사

결과가 변경됩니다. :

{"1":"one","2":"two","3":" three"}

데이터 형식이 "[]"(배열)에서 "{}"로 변경되었습니다. (물체).

"인덱스 배열"을 "객체"로 강제 적용해야 하는 경우

json_encode( (object)$arr ); 
로그인 후 복사

또는

json_encode ( $arr, JSON_FORCE_OBJECT ); 
로그인 후 복사
class 변환

을 작성할 수 있습니다. 다음은 PHP 클래스입니다.

class Foo {  
    const   ERROR_CODE = '404';  
    public  $public_ex = 'this is public';  
    private  $private_ex = 'this is private!';  
    protected $protected_ex = 'this should be protected'; 
   
    public function getErrorCode() {  
      return self::ERROR_CODE;  
    }  
  }
로그인 후 복사

이제 이 클래스에 대한 json 변환의 예:

$foo = new Foo;  $foo_json = json_encode($foo);  echo $foo_json; 
로그인 후 복사

출력 결과는

{"public_ex":"this is public"}
로그인 후 복사

입니다. 공용 변수(public)를 제외한 다른 것(상수, 전용 변수, 메소드 등)이 손실되는 것을 볼 수 있습니다.

2.json_decode()

이 함수는 json 텍스트를 해당 PHP 데이터 구조로 변환하는 데 사용됩니다. 예를 들면 다음과 같습니다.

$json = '{"foo": 12345}';
   $obj = json_decode($json);  print $obj->{'foo'}; // 12345 
로그인 후 복사

일반적으로 json_decode()는 항상 배열이 아닌 PHP 객체를 반환합니다. 예:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
로그인 후 복사

결과는 PHP 개체를 생성하는 것입니다:

object(stdClass)#1 (5) {    ["a"] => int(1)    ["b"] => int(2)    ["c"] => int(3)    ["d"] => int(4)    ["e"] => int(5)  
} 
로그인 후 복사

PHP 연관 배열을 강제로 생성하려면 json_decode()에서 true 매개변수를 추가해야 합니다.

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
 
var_dump(json_decode($json,true)); 
로그인 후 복사

결과는 연관 배열을 생성하는 것입니다. array:

array(5) {  
   ["a"] => int(1)     ["b"] => int(2)     ["c"] => int(3)     ["d"] => int(4)     ["e"] => int(5)  
} 
로그인 후 복사
json_decode() 일반적인 실수

다음 3가지 json 작성 방법은 모두 잘못되었습니다. 어디에서 오류가 발생했는지 알 수 있나요?

$bad_json = "{ 'bar': 'baz' }";  
$bad_json = '{ bar: "baz" }';  
$bad_json = '{ "bar": "baz", }'; 
로그인 후 복사

이 세 문자열에 대해 json_decode()를 실행하면 null이 반환되고 오류가 보고됩니다.

첫 번째 오류는 json 구분 기호가 작은따옴표가 아닌 큰따옴표만 허용한다는 것입니다. 두 번째 실수는 어떤 경우에도 json 이름-값 쌍의 "이름"(콜론 왼쪽 부분)을 큰따옴표로 묶어야 한다는 것입니다. 세 번째 오류는 마지막 값 뒤에 후행 쉼표를 추가할 수 없다는 것입니다.

또한 json은 객체와 배열을 나타내는 데에만 사용할 수 있습니다. json_decode()가 문자열이나 값에 사용되면 null이 반환됩니다.

3. JavaScript는 json 문자열을 사용합니다

JSON 문자열을 JSON 객체로 변환하는 방법

먼저 JSON 객체로 변환하려면 다음 방법을 사용하세요:

//由JSON字符串转换为JSON对象var obj = eval('(' + str + ')');
로그인 후 복사

또는

var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
로그인 후 복사

또는

var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
로그인 후 복사

그러면 다음과 같이 읽을 수 있습니다. :

Alert(obj.name);Alert(obj.sex);
로그인 후 복사

특별 참고 사항: obj가 원래 JSON 객체인 경우 eval() 함수를 사용하여 변환한 후에(여러 번 변환되더라도) 여전히 JSON 객체이지만 사용 후에는 문제가 발생합니다. 이를 처리하기 위해 parseJSON() 함수를 사용합니다(구문 예외 발생).

관련 권장사항:

json_decode가 php에서 특수 물음표 문자를 구문 분석할 수 없는 문제에 대한 솔루션

PHP가 중국어 메소드를 이스케이프하지 않고 json_decode를 구현하는 방법 소개

json_encode와 json_decode의 차이점을 비교하세요

위 내용은 PHP에서 json_decode 및 json_encode 사용 방법 공유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 Dec 17, 2023 pm 02:54 PM

WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법

Oracle DECODE 기능의 고급 활용 및 기술 공유 Oracle DECODE 기능의 고급 활용 및 기술 공유 Mar 08, 2024 am 10:30 AM

Oracle DECODE 기능의 고급 활용 및 기술 공유

WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 Dec 17, 2023 pm 05:30 PM

WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법 Dec 17, 2023 am 09:39 AM

WebSocket과 JavaScript를 사용하여 온라인 예약 시스템을 구현하는 방법

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법 Dec 17, 2023 pm 12:09 PM

JavaScript 및 WebSocket을 사용하여 실시간 온라인 주문 시스템을 구현하는 방법

Oracle DECODE 기능 상세 설명 및 사용 예시 Oracle DECODE 기능 상세 설명 및 사용 예시 Mar 08, 2024 pm 03:51 PM

Oracle DECODE 기능 상세 설명 및 사용 예시

JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 Dec 17, 2023 pm 05:13 PM

JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법

See all articles