ホームページ >バックエンド開発 >PHPチュートリアル >インターフェイスとしての PHP が JSON データ形式を返す問題
php がインターフェースとして返す json データ形式に問題があります。返されるデータが多次元配列の場合、空の場合は [{ … }] を返す必要があります。 ]。
1 次元配列の場合は、{....} の形式で返されます。空の場合は、{ } の形式でも返されます。
ここで問題が発生します。$result = array(); などの多次元配列が空の場合、返される形式は [ ] です。変更するにはどうすればよいですか?
echo str_replace('[]', '{}', json_encode($json)); この場合、[ ] はすべて中括弧 { } に置き換えられます
If出力値を決定し、異なるデータ結果に応じて異なる $json を出力してから json_encode
空の配列または空のオブジェクトを返すと使用に影響しますか?
空の配列または空のオブジェクトを返すと、その使用に影響しますか?
それは、null をチェックしなかったからです
それは、null をチェックしなかったからです
もちろん、型変換を行うこともできます (ただし、それを使用するときに null をチェックしないことは常に不可能です)
$a = array( 'b' => (object)array(), 'c' => array(),);echo json_encode($a);{"b":{},"c":[]}
必要がなければ置き換えるには、Javaを使用できます。jsonを解析すると配列になるので、それを直接判断するだけです。クラッシュの理由は、空のオブジェクトの転送をシールドしなかったため、プログラムが致命的なエラーで直接クラッシュしたためです。これはコードの不正確さが原因であり、json のかっことは関係ありません。
空のデータをシールドするにはどうすればよいですか? 多くのデータが空です
空のデータをシールドするにはどうすればよいですか? 多くのデータが空です
個人的には、出力結果を均一に制御できるように、JSON 出力には統一されたアウトレットが必要だと思います。置き換えるには、Javaのjsonを解析した後、配列になるので、それを直接判断するだけです。クラッシュの理由は、空のオブジェクトの転送をシールドしなかったため、プログラムが致命的なエラーで直接クラッシュしたためです。これはコードの不正確さが原因であり、json のかっことは関係ありません。
空のデータをどのようにシールドするか? 多くのデータは空です
Android を作成している場合は、それをシールドする方法を確実に知っています。必要に応じて出力対応データを標準化する必要があります。