JSONデータを変換してみた
{
"a": {
"b": null
}
}
オンライン コンバーターを使用して XML に変換します。応答は
<a>
<b />
</a>
同じコンバーターを使用してこれを JSON に戻すと、
{
"a": {
}
}
これは疑問に思いました。明示的に null 値を指定した場合、JSON を処理するときにそれを保持する必要があるのでしょうか? XML が と同等で<a><b /></a>
はない<a></a>
こと、特にそうでないことはかなり確信しています<a />
(これは、同じ演習を続けるとたまたま得られるものです)。
つまり、出所不明の JSON を渡され、それを不明な受信者に渡すことになっている場合、null を保持する必要がありますか、それとも安全に削除できますか? 逆に、サードパーティのソフトウェアによって配信されたときに出力したのと同じように、null を信頼できますか?
同様の質問があります: JSON に null 値を含める必要がありますか? ただし、問題は、元の形式について何も知らない場合に何をすべきかではなく、自分で形式を定義した場合にコードが null を出力する必要があるかどうかです。
編集 – 明確化:質問の仕方が悪く、混乱を招いたようです。言い換えると、XML と JSON は異なる形式であり、異なる種類の (メタ) データを運ぶことができることは理解しています。RFC4627で定義されているように、 nullが有効な値であることは知っています。形式には 1 対 1 の関係がないため、XML と JSON の間で変換する方法が異なることは理解しています。私が見つけたコンバーターにバグがある可能性があることは理解しています。ただし、同じコンバーターが両方向で同じ変換を提供しなかったという事実(からへの変換時に情報が失われることはありません)"b": null
<b />
反対方向の同様の翻訳も可能だったでしょう)、試みたにもかかわらず答えを見つけることができなかった何かを不思議に思いました:
- JSON 標準によれば、他のソフトウェアに代わって転送するときに
{"a":{"b":null}}
と{"a":{}}
を 1 つの同じオブジェクトとして扱うことは合法ですか?
ここでは、必要に応じて空白を追加または削除することが合法であると仮定していることに注意してください (たとえば、RFC4627 に従って問題のないきれいな印刷)、さらにはコレクション内の名前/値のペアを再配置することさえ (RFC4627 に従って) )。nullを重要なデータと同じように保持する必要があるのか、それとも意味のない空白と同じように削除できるのかがわかりません。