0

さまざまなシナリオに使用できるデータスキーマを見つけようとしていますが、これまでに見つかった有望な形式は collection+json 形式 ( http://amundsen.com/media-types/collection/ ) です。

{"name" : "full-name", "value" : "J. Doe", "prompt" : "Full Name"},これまでのところ、必要な機能がたくさんあり、非常に柔軟ですが、単純なキーと値のペアの代わりに匿名オブジェクト (例: ) を使用する理由がわかりません。(例: "フルネーム": "J. Doe", )。

プロンプトなどのより多くの情報を転送する方法はわかりますが、配列を検索してフィールドにアクセスする必要があるため、解析がはるかに遅くなり、クライアントを作成するのが難しくなります。データを特定のビューにバインドする場合、どのフィールドが存在するかを知る必要があるため、匿名オブジェクトを再度キー値マップに変換する必要があります。

では、キー値マップの代わりにこの匿名オブジェクトを使用する本当の利点はありますか?

4

2 に答える 2

2

主な理由は、消費者クライアントがデータの形式を事前に知る必要がないためだと思います。

collection+json で現在提案されているように、データ オブジェクトでは、データを解析するだけでデータに関する情報を見つけることができます。'name' は常にフィールドの識別名であり、'value' は値などです。の場合、クライアントはフィールドの数やその名前にとらわれない可能性があります。

{
 "name" : "full-name", 
 "value" : "J. Doe", 
 "prompt" : "Full Name"
},
{
 "name" : "age", 
 "value" : "42", 
 "prompt" : "Age"
}

あなたが代わりに持っていたら

{
 "full-name" : "J. Doe", 
 "age" : "42"
}

クライアントはあなたの表現についての事前知識を持っている必要があるため、「フルネーム」、「年齢」、およびすべてのアプリケーション固有のフィールドを期待して理解する必要があります。

于 2013-11-27T10:42:24.593 に答える
0

私はこの質問を書き、それを忘れていましたが、ここで探していた答えを見つけました:

https://groups.google.com/forum/#!searchin/collectionjson/key/collectionjson/_xaXs2Q7N_0/GQkg2mvPjqMJ

コレクション+JSONの作成者であるMike Amundsenから

オブジェクトのシリアライゼーション パターンを CJ に追加したいというご要望は承知しております。ただし、私の CJ 設計の主な目標の 1 つは、オブジェクトのシリアル化をサポートしないことです。シリアライゼーションは、Web メッセージに対して頻繁に要求される機能であることを知っています。これは、コードとプログラマーのエクスペリエンスの両方を最適化する優れた方法です。しかし、それは私がこの特定のデザインで目指しているものではありません.

Kevin ref'd の拡張機能は良い選択肢だと思います。誰かが本当にそれを使用しているかどうかはわかりません。(「体」のアイデアに基づいて) 1 つを設計したい場合は、それは素晴らしいことです。すべての「プル」作業を行うのではなく、要点から始めたい場合は、それは素晴らしいことです。それを投稿して、それについて話しましょう。

別のメモとして、CJ の状態モデルをきれいにナビゲートするための「コストのかかる」部分を非表示にする方法を示すために、CJ 用の非常に基本的なクライアント側パーサー (リポジトリの基本フォルダーにあります) を作成しました。実際には、状態表現を任意のローカル オブジェクト モデルに変換できるクライアント側のライブラリを作成する作業項目がありますが、まだ作業を行う時間がありません。多分これはあなたが私を助けたいと思うものですか?

より深い (そしておそらくもっと退屈な) レベルでは、この状態モデルのアプローチは、メッセージを「型のない」コンテナーとして扱い、クライアントとサーバーが好みのローカル オブジェクト モデルを利用できるようにするという、より大きなパターンの一部です。 - そのオブジェクト モデルに関するクロス Web 合意は必要ありません。これは、私が目指している「独自のデザイン モデル」です。

最後に、スレッドの上部で正しく指摘されているように、HAL と Siren は、オブジェクトのシリアル化スタイルのメッセージをより適切にサポートできます。これは非常に素晴らしいことだと思います。オブジェクトのシリアライゼーションが好ましいパターンである場合はこれらの他の形式を使用し、状態転送が好ましいパターンである場合は CJ を使用することを人々 (私のクライアントを含む) に勧めています。

于 2013-11-27T13:23:19.113 に答える