ホームページ >バックエンド開発 >PHPチュートリアル >インターフェイスとしての PHP が JSON データ形式を返す問題

インターフェイスとしての PHP が JSON データ形式を返す問題

WBOY
WBOYオリジナル
2016-06-23 13:45:17899ブラウズ

php がインターフェースとして返す json データ形式に問題があります。返されるデータが多次元配列の場合、空の場合は [{ … }] を返す必要があります。 ]。
1 次元配列の場合は、{....} の形式で返されます。空の場合は、{ } の形式でも返されます。
ここで問題が発生します。$result = array(); などの多次元配列が空の場合、返される形式は [ ] です。変更するにはどうすればよいですか?
echo str_replace('[]', '{}', json_encode($json)); この場合、[ ] はすべて中括弧 { } に置き換えられます


ディスカッションへの返信(解決策)

If出力値を決定し、異なるデータ結果に応じて異なる $json を出力してから json_encode

空の配列または空のオブジェクトを返すと使用に影響しますか?

空の配列または空のオブジェクトを返すと、その使用に影響しますか?


使用に影響を与えるだけでなく、まったく使用できなくなります。それが原因で Android がクラッシュします

それは、null をチェックしなかったからです

それは、null をチェックしなかったからです


空の場合は、空の配列にします $a=array(); Javaのjsonで解析すれば配列になるので置き換える必要はなく、そのまま判断できます。クラッシュの理由は、空のオブジェクトの転送をシールドしなかったため、プログラムが致命的なエラーで直接クラッシュしたためです。これはコードの不正確さが原因であり、json のかっことは関係ありません。

もちろん、型変換を行うこともできます (ただし、それを使用するときに null をチェックしないことは常に不可能です)
$a = array( 'b' => (object)array(), 'c' => array(),);echo json_encode($a);
{"b":{},"c":[]}


必要がなければ置き換えるには、Javaを使用できます。jsonを解析すると配列になるので、それを直接判断するだけです。クラッシュの理由は、空のオブジェクトの転送をシールドしなかったため、プログラムが致命的なエラーで直接クラッシュしたためです。これはコードの不正確さが原因であり、json のかっことは関係ありません。

空のデータをシールドするにはどうすればよいですか? 多くのデータが空です
json_encode の後に、一番外側のオブジェクトを使用することをお勧めします。置き換えるには、Javaのjsonを解析した後、配列になるので、それを直接判断するだけです。クラッシュの理由は、空のオブジェクトの転送をシールドしなかったため、プログラムが致命的なエラーで直接クラッシュしたためです。これはコードの不正確さが原因であり、json のかっことは関係ありません。


空のデータをシールドするにはどうすればよいですか? 多くのデータが空です

個人的には、出力結果を均一に制御できるように、JSON 出力には統一されたアウトレットが必要だと思います。置き換えるには、Javaのjsonを解析した後、配列になるので、それを直接判断するだけです。クラッシュの理由は、空のオブジェクトの転送をシールドしなかったため、プログラムが致命的なエラーで直接クラッシュしたためです。これはコードの不正確さが原因であり、json のかっことは関係ありません。

空のデータをどのようにシールドするか? 多くのデータは空です
Android を作成している場合は、それをシールドする方法を確実に知っています。必要に応じて出力対応データを標準化する必要があります。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。