json_array에 추가
JSON 문자열을 배열로 디코딩하려고 하는데 다음 오류가 나타납니다.
치명적인 오류: C:\wamp\www\temp\asklaila에서 stdClass 유형의 개체를 배열로 사용할 수 없습니다.6행의 php
코드는 다음과 같습니다.
<?php
$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj['Result']);
?>
설명서에 따라 다음 항목을 지정해야 합니다.true
두 번째 인수로 오브젝트 대신 관련 배열을 원하는 경우json_decode
코드는 다음과 같습니다.
$result = json_decode($jsondata, true);
네가 원한다면integer
속성 이름이 무엇이든 간에 키를 누릅니다.
$result = array_values(json_decode($jsondata, true));
그러나 현재 디코딩에서는 개체로 액세스하기만 하면 됩니다.
print_r($obj->Result);
이거 먹어봐
$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 code 또는 ternary 연산자를 추가할 수 있지만 IMO는 단순히 2줄을 ...로 변경하는 것이 더 명확합니다.
$arr = (array) json_decode($jsondata,true);
...당신이 아니라면json_decode
@TCB13에서 지적했듯이 퍼포먼스에 악영향을 미칠 수 있습니다.
만약 당신이 5.2보다 작은 php로 작업하고 있다면 이 리소스를 사용할 수 있습니다.
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($data, true); // Returns data in array format
json_decode($data); // Returns collections
따라서 어레이가 필요한 경우 두 번째 인수를 true로 전달할 수 있습니다.json_decode
기능.
json_decode
support second 인수를 지원합니다.TRUE
이 경우, 반환됩니다.Array
대신stdClass Object
의 [Manual]페이지를 확인합니다.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!
이게 도움이 됐으면 좋겠다
$json_ps = '{"courseList":[
{"course":"1", "course_data1":"Computer Systems(Networks)"},
{"course":"2", "course_data2":"Audio and Music Technology"},
{"course":"3", "course_data3":"MBA Digital Marketing"}
]}';
Json 디코드 기능 사용
$json_pss = json_decode($json_ps, true);
php의 JSON 어레이를 통한 루프
foreach($json_pss['courseList'] as $pss_json)
{
echo '<br>' .$course_data1 = $pss_json['course_data1']; exit;
}
결과: 컴퓨터 시스템(네트워크)
PHP json_decode에서 json 데이터를 PHP 관련 배열로 변환합니다.
예:$php-array= json_decode($json-data, true); print_r($php-array);
이거 드셔보세요
<?php
$json_string = 'http://www.domain.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata, true);
echo "<pre>"; print_r($obj['Result']);
?>
다음과 같이 시도합니다.
$json_string = 'https://example.com/jsondata.json';
$jsondata = file_get_contents($json_string);
$obj = json_decode($jsondata);
print_r($obj->Result);
foreach($obj->Result as $value){
echo $value->id; //change accordingly
}
언급URL : https://stackoverflow.com/questions/5164404/json-decode-to-array
'programing' 카테고리의 다른 글
Java HotSpot(TM) 64비트 서버 VM 경고: MaxPermSize 옵션 무시 (0) | 2022.10.31 |
---|---|
int의 스트림을 Java의 char로 변환하는 중 (0) | 2022.10.31 |
Java 8의 java.time API에서의 모킹 타임 (0) | 2022.10.31 |
JavaScript 배열에서 임의 값 가져오기 (0) | 2022.10.31 |
jQuery 및 Ajax와 함께 기본 인증 사용 (0) | 2022.10.31 |