2016-06-13 39 views
0

我正在爲我們公司的職位列表頁面工作。我們正在使用API​​從我們的HR軟件提供商處檢索信息。 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/)中的錯誤並修復創建它們的軟件。儘管在技術上可以創建一個支架匹配清潔腳本,但可能無法明確地重新創建數據。 – jDo

+0

已經選中此[發佈](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失敗的原因。 你真的想反序列化格式錯誤的數據,並進一步根據你的邏輯數據

再次,之前手動解碼任何檢查以下內容:

  • 正在恢復中沒有應用程序期望的編碼數據的字符編碼的服務器。特別是如果您的後端運行在基於Linux的服務器上,並且Windows上的第三方API運行時,您的應用程序內部邏輯沒有進一步編碼JSON。一個很好的嘗試將是檢查編碼的HTML實體和/或它們與html_entity_decode()

從我的經驗解碼 - 如果這些問題仍然存在,嘗試使用它能夠自動前面提到的步驟,你的包裝(並翻譯半JSON表達式,如MongoDB的查詢,JavaScript表達式):

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