REST APIのCSV、JSON、XMLの相対的なメリットは何ですか?
質問
現在、アプリケーション用の新しい API
を計画しており、交換に使用するさまざまなデータ形式について議論しています。 CSV
、 JSON
、および XML
の相対的なメリットについては、かなり激しい議論が行われています。
基本的に、議論の要点は、再帰の欠如のために CSV
をまったくサポートすべきかどうかです( つまり、複数の著者
および multiple reference
では、すべての information
を取得するには、 multiple API呼び出し
が必要です。
Web API
からの情報を扱うときに経験したことのある経験と、 API
で作業する開発者の生活を楽にするためにできること。
私たちの決定:
CSV
の再帰は1つの論理演算に複数の呼び出しを必要とするため、XML
とJSON
を提供することにしました。JSON
にはQt
にパーサーがなく、Protocol Buffers
にはnon-alpha PHP
実装も行われているため、現時点ではサポートされていませんが、おそらく最終的にサポートされる予定です。
解決
CSVはまさにその通りです。 JSONはXMLよりもコンパクトなオブジェクト表記法であるため、大量を探している場合には利点があります。 XMLはより広く市場に浸透しており(そのフレーズが大好きです)、すべてのプログラミング言語とそのコアフレームワークでサポートされています。 JSONはそこに到達しています(まだ存在しない場合)。
個人的には、括弧が好きです。私は、jsonよりもxmlデータを操作することに慣れている開発者の方が多いと思います。
他のヒント
利点:
- XML-多くのライブラリ、開発者はXSLTに精通、クライアントとサーバー(XSD、DTD)、階層データの両方で簡単に検証可能
- JSON-クライアント側で簡単に解釈、コンパクトな表記法、階層データ
- CSV-Excel(?)で開きます
欠点:
- XML-肥大化した、JSONよりもJavaScriptでの解釈が難しい
- JSON-不適切に使用すると、セキュリティホールが発生する可能性があります(evalは使用しないでください)。すべての言語で解釈できるライブラリがあるわけではありません。
- CSV-階層データをサポートしていません。それを行うのはあなただけです。実際には、ほとんどの開発者が有効なcsvファイルを解析するよりもはるかに難しいです)。
上記のことを考えると、CSVをサポートすることすらしません。本当に必要な場合、クライアントはXMLまたはJSONから生成できます。
CSVには複雑なデータモデルほど多くの問題があるため、使用しません。 XMLは非常に柔軟性が高く、プログラムも簡単です。クライアントはXMLジェネレーターとパーサーのコーディングに問題はありません。SAXを使用してサンプルパーサーを提供することもできます。
Googleのネットワークデータ形式をチェックアウトしましたか?プロトコルバッファと呼ばれます。ただし、HTTPレイヤー全体をスキップするため、RESTサービスに役立つかどうかはわかりません。
XMLは、時には少し重くなります。ただし、JSONは優れた言語サポートを備えており、JSONデータは多くのプレイフォームでネイティブオブジェクトに直接変換できます。
JSONの経験はありません。CSVは、データが非常に表形式で均等に構造化されている時点まで機能します。特に、オブジェクトへのバインディングを自動的に作成するツールがない場合、XMLは非常に扱いにくくなります。
これも試したことはありませんが、 Googleのプロトコルバッファは見栄えがよく、シンプルな形式です、C ++、Java、Pythonへの自動バインディングを作成し、作成されたオブジェクトのシリアライゼーションとデシリアライゼーションを実装します。
Allain Lalondeが既に言ったことは別として、CSVのもう1つの利点は、XMLよりもコンパクトになる傾向があることです。またはJSONも。したがって、データが完全にフラットな階層で厳密に表形式である場合、CSVが正しい選択である可能性があります。 CSVのその他の欠点は、CSVが生成したツール(さらには国!)に依存して、異なる区切り文字と小数点区切り文字を使用する可能性があることです。