본문 바로가기
IT/web

[PHP] json_decode 설명과 예제

by 어느해겨울 2021. 12. 28.

 

json_decode

- json string을 data로 변환한다. string to object, array.

 아래는 json string을 json object와 array로 decode 하는 예제이다.

<?php
    $str_json = '{
        "name": "muabow",
        "url": "https://muabow.tistory.com",
        "desc": "한글과 공백"
    }';
    
    
    // string to object
    $obj_json = json_decode($str_json);
    var_dump($obj_json);
    
    echo $obj_json->name;
    
    // object 변수로 접근
    $str_url = "url";
    echo $obj_json->$str_url;
    
    
    // string to array
    $arr_json = json_decode($str_json, true);
    var_dump($arr_json);
    
    echo $arr_json["name"];
    
    // array 변수로 접근
    $str_url = "url";
    echo $arr_json[$str_url];
?>
object(stdClass)#1 (3) {
  ["name"]=>
  string(6) "muabow"
  ["url"]=>
  string(26) "https://muabow.tistory.com"
  ["desc"]=>
  string(16) "한글과 공백"
}
muabow
https://muabow.tistory.com

array(3) {
  ["name"]=>
  string(6) "muabow"
  ["url"]=>
  string(26) "https://muabow.tistory.com"
  ["desc"]=>
  string(16) "한글과 공백"
}
muabow
https://muabow.tistory.com

 

json_decode 포맷

json_decode(
    string $json,
    ?bool $associative = null,
    int $depth = 512,
    int $flags = 0
): mixed

 

인자 중 associative(2번째)를 true로 사용하면 string 을 array로 변환한다. 

flags는 다음 항목들을 사용할 수 있으며 역시 |를 통해 복수개를 사용 가능하다.

경험적으론 json_decode() 시에는 flag를 사용해본적이 없어서 자세한 설명은 생략한다.

JSON_BIGINT_AS_STRING
JSON_INVALID_UTF8_IGNORE
JSON_INVALID_UTF8_SUBSTITUTE
JSON_OBJECT_AS_ARRAY
JSON_THROW_ON_ERROR

 

하지만 필요할 수도 있으니 php predefined constatns 페이지를 링크한다.

https://www.php.net/manual/en/json.constants.php

 

PHP: Predefined Constants - Manual

In a multi-level array, JSON_FORCE_OBJECT will encode ALL nested numeric arrays as objects. If your concern was ONLY the first-level array (e.g., to make it suitable as a MySQL JSON column), you could just cast your first-level array to object, e.g.: Or, i

www.php.net

 

 

댓글