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/
답변
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!