1

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を重要なデータと同じように保持する必要があるのか​​、それとも意味のない空白と同じように削除できるのかがわかりません。

4

2 に答える 2

0

はい、null は JSON の個別の値であり、明らかに属性を持たないこととは異なります。また、 XML のヌルに関するこの質問も見ることができます。ここで結論付けるべきことは、JSON や XML に何か問題があるということではなく、単純に、使用するツールがこれらのケースを処理するようにコーディングされていないということです。

于 2012-06-18T11:14:57.950 に答える
0

JSON を XML に変換する際の問題の 1 つは、変換をロスレスにしようとすると、やや「不自然な」XML になり、最も自然な XML 表現を作成しようとすると、情報が失われることです。そのため、わずかに異なる方法でそれを行うさまざまなコンバーターがたくさんあります。要件を満たすものを選択してください。

于 2012-06-18T14:05:44.110 に答える