ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルで JSON パッケージが見つからない問題を正しく解決する方法
この問題の代替案は、PHP json の json_decode メソッドと json_encode メソッドをオーバーライドすることです。
これら 2 つの PHP に JSON パッケージがない場合の解決策は、主に配列、文字列、またはオブジェクトを json 形式のデータ (特殊な構造形式) に変換することです。まず必要なのは json_encode メソッドです。このメソッドは主に配列、文字列、オブジェクトなどを json 形式に変換します。この問題を解決する方法:
a. 簡易バージョン:
独自の問題のニーズに応じて (単純な配列を操作するだけで済みます)、この配列を直接文字列化できます。
b.完璧なエンコード方法:
PHP に JSON パッケージがない問題を解決する簡単な方法は、他の人が完成させたオープンソース コードを使用することです:
最初に思い浮かぶのは、zend フレームワークです。 zf_json パッケージから Decoder.PHP と Encoder.PHP を取得します。 Decoder.PHP は実際には、いずれかの保護メソッドの保護を削除するだけで済みます。 具体的な操作を忘れてしまったので、読者の方が自分でデバッグして解決してください。 Decoder クラスを書き換えた後、次のように呼び出します。
<ol class="dp-xml"> <li class="alt"><span><span>$</span><span class="attribute">filepath</span><span> = $_SERVER['DOCUMENT_ROOT']; </span></span></li> <li> <span>include $filepath.'/inc/json/Encoder.</span>PHP<span>'; </span> </li> <li class="alt"> <span>$</span><span class="attribute">encoder</span><span> = </span><span class="attribute-value">new</span><span> Zend_Json_Encoder(false); </span> </li> <li> <span>$</span><span class="attribute">json</span><span> = $encoder -</span><span class="tag">></span><span>encode($result); </span> </li> <li class="alt"><span>header("X-JSON: $json"); </span></li> </ol>
json_decode メソッドは、PHP で使用される場合は上記と同じです。
json が使用される多くの場所は依然として ajax 呼び出し内にあるため、一部の ajax 'フレームワーク' は、PHP に JSON パッケージがないという問題を解決するためのデコード メソッドを提供します。
たとえば、プロトタイプでは、PHP ページにprototype.js が含まれている場合, その後、 function(transport, json) { を直接呼び出すことができます。 。 Operation} json データ (json.a、json.b など) を取得します。
PHP に JSON パッケージがないという問題に加えて、エンコードに関する問題が発生する可能性があります。
zend フレームワークによって返される中国語の文字エンコーディングは、おそらく私のページのエンコーディング (utf-8) に対応していないため (utf-8 ではないというわけではありません)、問題が発生します。したがって、一部の検証で返されるエラー メッセージ (漢字) に影響します。ここでの代替方法は、従来のインターフェイスを使用して数値コード形式を返すことです (通信ゲートウェイでよく使用されるメソッド)。たとえば、json.code を返すには、0、1、2、3 などの多くの可能性があります。 js 側で処理する場合、0 は成功を示し、1 は不正なクライアント データを示します。 問題は完璧に解決されました。