2016-06-13 4 views
0

저는 회사의 채용 정보 페이지에서 작업하고 있습니다. 우리는 HR 소프트웨어 공급 업체로부터 정보를 검색하기 위해 API를 사용하고 있습니다. JSON이 유효하지 않은 것 같습니다. 나는 그것을 테스트하기 위해 아래를 사용하고있다.PHP로 잘못된 JSON을 구문 분석하는 방법

<?php 
    //Testing if ADPs json is valid 
    $json = json_decode($jsondata); 
    if (json_last_error() === JSON_ERROR_NONE) { 
     // $json contains a valid json string. It's ready to use. 
     print_r($jobdata); 
    } else { 
     // oops, it's not valid JSON. 
     echo '<h2>'.'We\'re sorry. We are unable to list jobs right now. Please contact'.' <a href="mailto:[email protected]">[email protected]</a>'.'</h2>'; 
    } 
    ?> 

잘못된 JSON을 구문 분석 할 수있는 방법이 있습니까? 어딘가에 예상치 못한 대괄호가있는 것으로 보입니다.

+1

가 [JSONLint]을 사용하여 오류를 (http://jsonlint.com/) 찾아 그들을 만든 소프트웨어를 수정 :와 MongoDB를 쿼리, 자바 스크립트 표현 같은 반 JSON 표현식을) 번역. 기술적으로 브래킷 일치하는 정리 스크립트를 만들 수도 있지만 데이터를 모호하지 않게 재현하는 것은 불가능할 수 있습니다. – jDo

+0

이미이 [post] (http://stackoverflow.com/questions/17752948/php-invalid-characters-in-json-decode)를 확인 했습니까? – Stacked

+0

JSON의 핵심은 표준화 된 형식이라는 것입니다. 데이터가 표준에 부합하지 않으면 JSON이 아니며 PHP 및 다른 언어의 JSON 디코딩 함수가 오류와 함께 버립니다. 'json_decode()'가 무효 인 JSON 캐릭터 라인을 받아들이게하는 것은 불가능합니다. 먼저 JSON을 수정 한 다음 디코딩해야합니다. – Simba

답변

0

json_decode이 실패합니다. 형식이 잘못된 데이터를 deserialize하고 그러한 데이터에 논리를 추가적으로 적용 하시겠습니까?? 다시

는 전에 수동으로 아무것도 다음 확인 디코딩 :

  • 데이터 응용 프로그램에서 예상하지 인코딩에서 문자 인코딩 반환하는 서버입니다. 특히 백엔드가 리눅스 기반 서버에서 실행되고 Windows API에서 제 3 자 API가 실행되는 경우
  • JSON은 응용 프로그램 내부 논리에 의해 더 이상 인코딩되지 않습니다. 좋은 시도가 인코딩 된 HTML 엔티티를 확인하는 및/또는 의 html_entity_decode() 내 경험에서

로 디코딩 것 - 이러한 문제가 지속되면, (당신을 위해 단계를 언급 이전에 자동화하는 래퍼를 사용하려고

https://github.com/zendframework/zend-json

관련 문제