2014-03-03 9 views
3

좋아, 그렇다면 JSON 형태로 데이터를 내 사이트에 업로드하는 게임이 있습니다. json으로이 유사합니다PHP json_decode가 작동하지 않습니다.

{ 
    "PlayerList":[ 
    { 
     "PlayerKills":0, 
     "Username":"Player1", 
     "TimePlayed":0, 
     "Deaths":0 
    }, 
    { 
     "PlayerKills":0, 
     "Username":"Player1", 
     "TimePlayed":0, 
     "Deaths":0 
    } 
    ] 
} 

json으로는 참으로 정확하다는 것을 확인한 후, 오류없이, 내가 추측하기 시작했다 그 PHP의 문제 거짓말. JSON을 가져 오는 데 사용하는 코드는 다음과 같습니다.

$decodedJSON = json_decode($entityBody, true, 4);    
var_dump($decodedJSON); 

$ entitybody이 JSON 문자열입니다.

여기서 var_dump는 NULL을 반환하고 PHP 5.2를 사용하여 막혀 있기 때문에 json_last_error를 사용하여 문제가 무엇인지 확인할 수 없습니다.

누군가가 내게 문제가 어디에 놓여 있는지에 대한 정보를 제공 할 수 있다면, 많은 도움이 될 것입니다.

+0

[여기] (http://phpfiddle.org/main/code/fyg-yzb) –

+0

PHP 5.2를 사용해서는 안됩니다. 수년간 EOL을 해오 셨습니다. 공용 인터넷에서 실행하고 있다면 보안 취약점에 대한 전체적인 관심이 열려 있습니다. – GordonM

+0

내 json 데이터 형식이 잘못되었을 때도이 오류가 발생했습니다 (올바른 경우에도 json 형식이 ..... 다음 링크와 함께 올바른지 확인하십시오). 그리고 JSONLint를 사용하여 json 유효성 검사기 (https :// /jsonlint.com/) –

답변

4

depth 매개 변수를 설정하지 마십시오. 그냥 json_decode($entityBody,true);가 작동합니다. PHP 5.2 json_decode에서

1

내가 PHP 5.2.17에 그것을 확인하지 3.이 개 매개 변수를 필요로하며 보여줍니다 당신이 세 번째 매개 변수를 생략하면

Warning: json_decode() expects at most 2 parameters, 3 given. 

당신이

6

: 당신이 원하는 것을 얻을 것이다 이 시도 :

$entityBody = stripslashes($entityBody); 
// this will remove all backslashes which might be the cause of returning NULL 

$decodedJSON = json_decode($entityBody, true); 
// leave out the depth unless you really need it to be 4. 

var_dump($decodedJSON); 

문서 :

stripslashes-http://php.net/manual/en/function.stripslashes.php

json_decode-http://php.net/json_decode

-1

당신의 캐릭터 세트를 확인합니다. json_decode는 UTF-8로 인코딩 된 문자열에서만 작동합니다.

+0

입력 문자열에 128 자 미만의 문자 만 포함되어 있으므로 인코딩에 차이가 없습니다. –

관련 문제