[php] 배열에 대한 json_decode

JSON 문자열을 배열로 디코딩하려고하는데 다음 오류가 발생합니다.

치명적 오류 : 6 행의 C : \ wamp \ www \ temp \ asklaila.php에서 stdClass 유형의 객체를 배열로 사용할 수 없습니다.

코드는 다음과 같습니다.

<?php
$json_string = 'http://www.domain.com/jsondata.json';

$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj['Result']);
?>



답변

documentation에 따라 의 객체 대신 연관 배열을 원하는지 지정해야합니다 json_decode. 이것은 코드입니다.

json_decode($jsondata, true);


답변

이 시도

$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata,true);
echo "<pre>";
print_r($obj);


답변

이것은 늦게 기여했지만로 캐스팅에 유효한 경우 json_decode(array)있습니다.
다음을 고려하세요:

$jsondata = '';
$arr = json_decode($jsondata, true);
foreach ($arr as $k=>$v){
    echo $v; // etc.
}

$jsondata빈 문자열로 반환 되면 (자주 경험하는 것처럼) json_decode을 반환 NULL하여 3 행의 foreach ()에 잘못된 경고가 제공되었습니다 . if / the 코드 또는 삼항 연산자를 추가 할 수 있지만 IMO는 단순히 2 행을 …로 변경하는 것이 더 깨끗합니다.

$arr = (array) json_decode($jsondata,true);

… 한 json_decode번에 수백만 개의 큰 배열을 사용 하지 않으면 @ TCB13이 지적한 것처럼 성능에 부정적인 영향을 줄 수 있습니다.


답변

PHP를 5.2 이하로 작업하는 경우이 resourse를 사용할 수 있습니다.

http://techblog.willshouse.com/2009/06/12/using-json_encode-and-json_decode-in-php4/

http://mike.teczno.com/JSON/JSON.phps


답변

PHP 문서 json_decode 기능 에 따르면 반환 된 객체를 연관 배열로 변환하는 assoc 이라는 매개 변수가 있습니다.

 mixed json_decode ( string $json [, bool $assoc = FALSE ] )

이후 ASSOC의 매개 변수가 FALSE기본적으로이 값을 설정해야 TRUE배열을 검색하기 위해.

아래 코드를 검토하여 의미를 설명하십시오.

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

어떤 출력 :

object(stdClass)#1 (5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}

array(5) {
    ["a"] => int(1)
    ["b"] => int(2)
    ["c"] => int(3)
    ["d"] => int(4)
    ["e"] => int(5)
}


답변

또한 배열로 변경됩니다.

<?php
    print_r((array) json_decode($object));
?>


답변

json_decode두 번째 인수를 지원하면 설정된 TRUE경우 Array대신 대신을 반환합니다 stdClass Object. 지원되는 모든 인수와 세부 사항을 보려면 기능 매뉴얼 페이지를 확인 json_decode하십시오.

예를 들어 이것을 시도하십시오 :

$json_string = 'http://www.example.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, TRUE); // Set second argument as TRUE
print_r($obj['Result']); // Now this will works!