2012-04-24 2 views
3

내가 JSON 객체 메신저과 같이 URL에서 디코딩이 있습니다URL의 데이터가 작을 때 JSON 객체가 NULL입니까?

$var = json_decode(file_get_contents($url), true); 

내가 무엇입니까 데이터는 문자 데이터가 포함 된 JSON 객체로 반환되는 새로운 battle.net의 API에서입니다.

  • 여기에는 문자가 있고 생성 될 데이터가있는 실제 링크가 있습니다 : Character Found.
  • 여기에 존재하지 않는 문자에 대한 링크가 생성되고 오류 : Character Not Found.

"status"및 "reason"속성이 포함 된 JSON 객체로 오류가 반환됩니다. "status"속성 값은 항상 "nok"입니다.

내 문제는 문자가 JSON 개체 $ FALUND가 아닌지 확인하지 못하는 경우입니다. $ var가 NULL 인 경우 JSON 개체 $ var에 올바른 데이터가 들어 있는지 확인합니다. 나는 상태인지 여부를 확인 할 수 있어야한다 "NOK"그래서 난 출력 apropriate 오류 메시지

내가 가질 수

  • 확실히 제대로 생성되어 있는지 확인하기 위해 링크를 검사하였습니다.
  • json_decode(file_get_contents($url), true)json_decode(file_get_contents($url), false)으로 변경하고 개체로 $ var에 액세스를 시도했습니다.
  • 내가 battle.net의 API 포럼에 게시 file_get_contents($url)

대신 컬을 사용하여 시도하지만 난 여기뿐만 아니라 시도 거라 생각 했어요.

답변

3

페이지 문자를 찾을 수 없음 페이지는 많은 의미가 있지만 오류로 간주되는 404 Not Found HTTP 응답 코드를 반환하기 때문입니다.

file_get_contents과 같은 파일 기능은 HTTP 스트림 래퍼에서 오류 (404, 500 등)가 발생하면 기본적으로 false을 반환합니다.

$context = stream_context_create(array(
    'http' => array('ignore_errors' => true), 
)); 

$var = json_decode(file_get_contents($url, false, $context), true); 
+0

멋진 당신을 감사합니다, 내가 스트림 컨텍스트를 사용하여 읽었지만 내가 한 : 오류를 무시하고 json_decode 측이 그것을 분석 할 수 있다는 것을, 당신이 컨텍스트를 사용할 필요가 있으므로, 어쨌든 내용을 반환하기 위해

관련된 것으로 보이는 것을 찾지 못했습니다. – JaredTS486

관련 문제