ThinkPhp5.1開発プロジェクトを使用する場合、配列をJSON文字列に変換することは一般的な操作ですが、「データをJSONに変換できない」のエラーが表示される場合があります。これは通常、Windowsの下でGBKエンコードされた文字などの非UTF-8エンコード文字を含む配列によって引き起こされますが、JSON標準では、文字列をUTF-8エンコードする必要があります。
このタイプの問題を解決するには、PHPビルトイン関数を使用してエンコードを変換するか、ThinkPHP独自のJSON変換方法を使用する主な方法が2つあります。
PHPのICONV()関数は、文字エンコード変換を実装できます。非UTF-8エンコードアレイ要素の場合、iconv()を使用してUTF-8エンコードに変換し、json_encode()と呼ばれます。サンプルコードは次のとおりです。
$ array = array( 'name' => 'zhang san'、 'age' => 18、 'address' => 'xxx Road、xxxエリア、北京'); $ json_str = json_encode($ array、json_unescaped_unicode); //エラーが報告される場合があります($ arayは$ k => $ v){ $ array [$ k] = iconv( "gbk"、 "utf-8"、$ v); } $ json_str = json_encode($ array、json_unescaped_unicode); echo $ json_str;
ここで、json_encodeアレイを直接使用しようとすると、失敗します。次に、トラバースし、econvを使用してエンコードを変換し、JSONエンコードを実行することにより、JSON文字列を正常に生成できます。
ThinkPhp5.1は、アレイをJSON文字列に直接変換し、エンコードの問題を自動的に処理できるカプセル化されたJSON補助クラスを提供します。コードの例は次のとおりです。
Think \ Helper \ jsonを使用してください。 $ array = array( 'name' => 'zhang san'、 'age' => 18、 'address' => 'xxx Road、xxxエリア、北京'); $ json_str = json :: encode($ array); echo $ json_str;
この方法では、手動変換とエンコードは必要ありません。これにより、開発プロセスが簡素化され、ThinkPHPプロジェクトでの使用が推奨されます。
配列をJSONに変換するときのエンコーディングの問題は、一般的な落とし穴です。 json_encodeによって報告されたエラーのほとんどは、文字エンコードに関連しています。 ICONV変換またはThinkPHPのJSON :: Encodeメソッドは、実際の状況に従って選択して、コード効率をエンコードして改善する正しいデータを確保できます。これらの2つの方法を理解して習得することは、開発の問題をコーディングすることによって引き起こされるJSON変換の障害を回避するのに役立ちます。