2016-06-13 11 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/)を使用してエラーを検索し、それらを作成したソフトウェアを修正します。ブラケット対応のクリーニングスクリプトを作成することは技術的には可能ですが、データを明瞭に再現することは不可能かもしれません。 – 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でそれらをデコードするだろう - そのような問題が解決しない場合は、事前にあなたのための手順を述べた自動化ラッパーを使用してみてください(そして、MongoDBのクエリは、Javascript表現)のように、半JSON表現を翻訳:

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

関連する問題