現在の位置: ホーム> 最新記事一覧> json_decodeの違法なJSONキャラクターを処理する方法

json_decodeの違法なJSONキャラクターを処理する方法

gitbox 2025-05-29

PHP開発では、 JSON_DECODEはJSONデータを解析するための一般的な機能ですが、実際に使用すると、「違法なJSONキャラクター」の問題が解析障害を引き起こすことがよくあります。この記事では、 json_decodeが遭遇した違法なJSONキャラクターをトラブルシューティングと解決方法を包括的に理解し、問題を迅速に見つけてJSONの解析を正常に完了するのに役立ちます。


1。JSON_DECODEの基本と一般的なエラー

JSON_DECODEは、JSON文字列をPHP変数に変換するために使用されます。渡された文字列が正しくない場合、関数はnullを返し、特定のエラーコードはjson_last_error()を介して取得できます。

一般的なエラーは次のとおりです。

  • 違法なキャラクター:認識されていないキャラクターがJSON文字列に表示されます。

  • コーディングの問題:JSONはUTF-8エンコーディングでなければなりません、非UTF-8エンコーディングは解析に失敗します。

  • 構造エラー:見積もり、コンマ、ブラケットの不一致など。


2。違法なJSONキャラクターのトラブルシューティング方法

2.1エラーコードとエラー情報を表示します

解析が失敗すると、エラーコードと説明が推奨されます。

 <?php
$json = '{"name": "チャン・サン", "age": 28,}'; // 最後に余分なコンマがあることに注意してください
$data = json_decode($json, true);
if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'エラーコード:' . json_last_error() . PHP_EOL;
    echo 'エラーメッセージ:' . json_last_error_msg() . PHP_EOL;
}
?>

このコードは「文法エラー」を促し、JSON構造に問題があることを伝えます。

2.2オンラインツールを使用して、検証を支援します

複雑なJSON文字列に遭遇すると、文字列をオンラインJSON検証ツール(gitbox.netなど)にコピーして、構文エラーのトラブルシューティングを支援できます。


3.違法なキャラクターの調査とエンコードの問題に焦点を当てます

3.1 UTF-8への文字列エンコードを確認します

非UTF-8エンコードされた文字列は、解析を失敗させる可能性があります。 PHP関数を使用して、検出および変換できます。

 <?php
if (!mb_check_encoding($json, 'UTF-8')) {
    $json = mb_convert_encoding($json, 'UTF-8', 'auto');
}
?>

3.2隠されたキャラクターまたはBOMのクリーンアップ

コピーして貼り付けて隠された文字(BOMなど)が生成されると、解析が失敗する可能性があります。

 <?php
// 取り除く UTF-8 BOM
$json = preg_replace('/^\x{FEFF}/u', '', $json);
?>

3.3目に見えない文字のフィルタリング

正規表現で印刷されていない文字を除外します:

 <?php
$json = preg_replace('/[\x00-\x1F\x7F]/u', '', $json);
?>

4.特殊文字と脱出を処理します

4.1二重引用符を逃がします

JSON文字列に覆われていない二重引用符が表示されると、解析エラーも発生します。

 <?php
$json = str_replace('"', '\"', $json);
?>

注:この方法は単純なシナリオにのみ適しており、複雑なJSONにはブラインド交換は推奨されません。


5.サードパーティライブラリを使用して、フォールトトレランスを強化します

PHPに付属するJSON_DECODEの解析は比較的厳格です。そのため、次のような寛容なJSON解析ライブラリの使用を検討できます。

これらのライブラリは、違法なJSONキャラクターをより適切に見つけて許容するのに役立ちます。


6。概要とベストプラクティス

  • JSON文字列が正しくフォーマットされていることを常に確認し、不要なコンマや閉鎖されていない引用などの構文エラーを回避してください。

  • JSON文字列がUTF-8としてエンコードされていることを確認してください。

  • 隠されたキャラクターをきれいにして、爆発します。

  • JSON_LAST_ERRORJSON_LAST_ERROR_MSGを使用して、問題のポジショニングを支援します。

  • 複雑または不規則なJSONについては、検査を支援するために特別なJSON検証ツール(gitbox.net推奨)を使用してみてください。

  • サードパーティライブラリを使用して、必要に応じて分析の堅牢性を向上させます。

上記の調査スキルをマスターし、 JSON_DECODEの解析障害に遭遇したとき、あなたは安心し、すぐに問題を見つけて解決します!