2011-10-24 11 views
1

私はある種のデータ構造を使い続けています。これはJSONと非常に密接に関連していますが、正確にはマッピングされません。ルールは次のとおりです。私は特定のデータ構造の名前が必要です

  1. マップ、配列、およびプリミティブで構成されています。
  2. 階層的です。マップには名前/値のペアが含まれ、値は で、別のマップ、配列、またはプリミティブになります。配列には同じ規則を持つ値が含まれています。
  3. トップレベルは常にマップです。
  4. プリミティブは、文字列、整数、浮動小数点数、ブール値、場合によっては の日付です。
  5. 時々マップは順序付けられていないハッシュに過ぎないことがあり、時には名前/値の組み合わせの が重要になることがあります。

これは本当に便利な構造です。これを使用して、文書、データベースレコード、さまざまなメッセージ、httpリクエスト、たくさんのものを表すことができます。私はFreemarker(「データモデル」として)、Mongo、およびJSONを使用するものすべてでそれを実行しました。

これは実際のJSONではありません。これはファイル形式であり、特定のデータ構造の仕様ではないためです。オブジェクトツリーはストリームや関数などの他のものを指すことができるため、「オブジェクト」ではありません。 DOMではありません。

この意味は?

私たちはオフィスの周りで、一般化された議論のためにそれを "garg"と呼んでいます。

+0

あなたが見たソースのクラスに使用された名前は何ですか? – vhallac

+0

Javaの場合:マップ、リスト、および各プリミティブは独自の名前を取得します。 Javascriptでは、それは単なるオブジェクトまたは変数です。 – ccleve

答えて

0

これは実際のJSONではありません。これはファイル形式であり、特定のデータ構造の仕様ではないためです。

それは、 JSON(仕様が構文規則に含まれているため)ではないかもしれませんが、JSONが行うように、あなたの構造の定義は、同じデータ構造を定義します。

この構造の名前を付けると便利ではないと思います。データについて話しているときは、データと呼んでください。データを交換する必要がある場合は、データ交換フォーマットが必要です。今、JSONは良い気分です。

0

JSONは単なるファイル形式ではありません。 JSONもデータ構造体です。 JSON.org

から

JSONは二つの構造の上に構築されています:

  1. 名前/値ペアのコレクション。さまざまな言語で、これは がオブジェクト、レコード、構造体、辞書、ハッシュテーブル、キー付き リスト、または連想配列として実現されています。

  2. 値の順序付きリスト。ほとんどの 言語では、これは配列、ベクトル、リスト、またはシーケンスとして実現されます。

これらは汎用データ構造です。

0

associative arrayと書かれているようですが、オプションの注文があります。

これは、JSONが発注する要件を課さないことを除いて、JSONが表すものです。もちろん、他の多くの表現でも連想配列が記述されているため、JSONは一般的なテキストのシリアライズです。


更新1:JSONは連想配列ではありません。これはオブジェクトのプロパティの説明です。連想配列として解釈されることが多いので、多くの人が同じミスを犯します。実際には、 "オブジェクト表記法"はそれの適切な名前です - 驚き、驚き。 :)また、JSONはファイル形式ではありません。テキスト形式のシリアル化やマークアップ言語で、ファイル形式とは異なります。

+0

構造のマップ部分を記述しますが、残りの規則は記述しません。 – ccleve

+0

私はそれが間違っていると信じていますが、おそらくあなたは明確にすることができます。属性2-5を満たす連想配列には制限がありません。 JSONは連想配列のインスタンスであるため、一般的な連想配列は少なくともJSONと同じくらい*多くの機能を満たします。 – Iterator

0

これは、階層的なデータを保持する一般的なデータ格納構造です。私は一般的な名前は持っていませんが、C++のような獣を実装するのであれば、抽象基本クラスをVariantと呼んで、具象型の名前をInteger,ArrayMapなどです。私はそれらを使用する場所に関連するネームスペースでそれらをチャックします。私はこのような構造も使用しているのを見ましたが、私が認識することができる名前があるかどうかはわかりません。 DataStoreEnvironmentStorageBin、または一般的なもので、データの格納を暗に意味するものは、

私はこのようなクラス階層をJSONと呼んでいません。 JsonSerializerなどが必要な場合は、このデータをJSONにマップするためのものを提供します。

0

構造体は、ツリーであり、リーフにはさまざまな種類の値が格納されています。 ブーストでは、同様の構造がプロパティツリーと呼ばれます。

関連する問題