2009-07-23 20 views
15

私の勇気は、あるフォーマットを別のフォーマットに入れるのは間違っていると言いますが、私は具体的な理由を思いつくことはできません。ちょうど2つのセクションでは、論理的に異なるコードで解析しようとしているが、交換フォーマットとして、それは構文をミックスして一致させるためにokです?XMLでJSONをXMLに埋め込むのがなぜ悪いですか?

<root> 
<stuff> 
    thing 
</stuff> 
<more> 
    <a> 
    b 
    </a> 
    <a> 
    c 
    </a> 
</more> 
</root> 

を入れる対

<root> 
<stuff> 
    thing 
</stuff> 
<more> 
    <[!CDATA[{"a":["b","c"]}]]> 
</more> 
</root> 

JSON応答を解析する既存のエンドポイントがある場合は、回答は変わりますか?このエンドポイントをXML取り込みのために再コード化する必要があります。

+5

sqliteファイルをblobとしてデータベースに格納するのが悪いのはなぜですか? –

答えて

21

2つの形式を使用するインターチェンジ形式では、相互運用したいユーザーに余分な負担がかかります。今度は、JSONパーサであるXMLパーサを用意する必要があります。

ファイルのさまざまな部分について考えるときに精神的に切り換えなければならないため、人々が書式を変えるのが難しくなります。

最後に、構造全体を一度に見ることは簡単にはできません。たとえば、XPathを使用してJSONビットを取得することや、応答全体をJavaScriptオブジェクトとして扱うことはできません。 2つのフォーマットを混在させることで、データを操作する際に「最悪の世界」の問題が発生します。

+1

JSONレスポンスを解析する既存のエンドポイントがある場合、回答は変わりますか?このエンドポイントをXML取り込みのために再コード化する必要があります。 –

+0

あなたはすでにソリューションを持っているので、 XMLパーサーの上にあるJSONパーサー - あなたの質問に対する答えは、移植性、可読性、保守性、および古くからの古風な味に関するものです。確かに今は*動作していますが、将来誰が読んでいるのか、XMLに渡す人、JSONパーサーが必要な理由などについて説明します。むしろあなたが今のところ仕事を延期しているように見えるので、後でもっと多くの仕事が生まれるかもしれません。 – shuckster

+1

@Paul:現在の実装でうまくいく場合は、今すぐ変更する必要はありません。しかし、Laurenceが説明した問題を回避するための創造的な(読んだ:臭いの)方法を思いつくことが始まったら、それはあなたがどちらか一方に固執したいときです。 –

7

これは、データベースの正規化の議論のようなものです。純粋なXMLですべてを行う(またはデータベーススキーマを正規化する)ことは、より洗練され、より洗練されているため、特定の実装に不必要に結合されることもありません。しかし、XMLをJavaScriptオブジェクトに変換する必要がある場合(または、すべてのダミーのために5つのテーブルを結合する必要がある場合)、多くの余分なコードを書くことになり、不必要なパフォーマンスヒットが発生する可能性があります。

すべては正式な正当性と利便性をどのようにバランスさせるかによって異なります。これがW3Cによって標準化され、何百万という親愛なる神によって使用されるXML交換フォーマットの場合は、JSONを使用しないでください。これは自分で作成したコードでしか処理されない社内のアプリケーション用のものであれば、そこにJSONをスローして移動してください!

+5

+1。良い習慣は良いです。彼らは良い考えを置き換えることはできません。パターンが問題の最良の解決策ではないことが時々分かっています。時々ハックが正しいことです。あなたは何をしているのか知っていますか、それがより面倒であればあるほど、文書化する必要があり、どこかで乱雑さをカプセル化する必要があるので、いつか簡単に置き換えることができます:) – back2dos

3

私の意見では、XMLはデータ転送の表現に適していますが、JSONはマップや配列に関してははるかに表現力があります。リストやマップを表すためにJSONをxmlに埋め込むことに問題はありません。

関連する問題