0

現在、Androidアプリケーション内から(URLから)JSONフィードを呼び出す作業を行っています。このURLを呼び出すことは問題ありませんが、JSON出力で非常に厄介な問題が発生しています。昨日はJSONが正常に機能していましたが、今日呼び出したときに、文字列をJSONオブジェクトに変換できないというエラーが表示されます。

結果をコンソールに出力しましたが、JSON文字列は問題なく表示されました。

{"message":{"success":false,"error":22}}

ただし、substring()メソッドを使用して文字列の最初の文字のみを取得すると、出力は次のようになります。

·

これはエンコーディングの問題だと思いますが、JSONフィードに次のヘッダーを付けています。

content-type: application/json; charset=utf-8

YiiフレームワークメソッドCJSON::encode()を使用して、データをJSONにエンコードしています。今朝まで、それはいつも私に働きました。すべてのエンコーディングをutf-8に設定しましたが、役に立ちませんでした。

また、ブラウザーからJSONフィードを呼び出し、JSONをコピーして、オンラインJSONバリデーターを使用しました。これにより、最初の行に「{」ブラケットである「無効なJSON」の結果が表示されました。ブラケットを削除して手動で追加し、JSONを再度検証すると、バリデーターが「有効なJSON」の結果を返しました。

4

1 に答える 1

3

?>すべてのカスタムPHPファイルでPHP終了タグを使用していますか?

その場合は、終了タグを削除します。PHPではオプションです。また、PHPのオープンタグ<?phpが常にファイルの先頭から始まり、クラス/モデル/コントローラーにスペースがないことを確認してください。

終了タグの後に入力したものはすべてクライアントへの出力になるため、これらはこの種の特殊文字を作成します。すべてのPHPエディターが特殊文字を表示するわけではなく、空白を表示するだけの場合もあります。

<?php
    echo "Hello, World,";

?>
__//Here is a special character, but editor unable to display it.

デバッグする1つの方法は...使用するob_start() ob_end_clean()

  • ob_start() フロントスクリプトの上に追加するだけです...つまり、index.phpに追加します

  • CJSON::encode() を使用してバッファをクリーンアップする前にob_end_clean()

于 2012-10-18T11:27:11.320 に答える