データ構造を別のデータ構造と区別するスマートで効率的な方法について疑問に思っています。
データ構造が JSON ツリーとして配列に格納されていると仮定すると、問題は次のように要約できます。
[
// Type 1
{
"name" : "value",
"key" : "other_value",
},
// Type 2
{
"name" : "value",
"key" : "other_value",
"another_key" : "another_value",
"data" : [
{ "a" : 1 },
{ "a" : 2 },
// ...
]
},
// ...
]
私が思いついた可能な解決策は次のとおりです。
- のような手作りのハードコーディングされたルールです
if 'another_key' in data
が、データ エントリの数とさまざまな型の数が増えると、維持するのが大変になります。 - 構造フィンガープリンティング: 葉を除くツリー全体をハッシュし、ハッシュを使用して一意のデータ構造を識別します。
"data" : [ ... ]
のエントリ数が固定されている場合、これは良い解決策です。 - スキーマ ( JSON スキーマ、XML スキーマ、...) ですが、これは問題の問題に対して少し「過剰に設計されている」と感じています。
この問題や同様の問題を解決するためのより良い方法を知っていますか?
編集:その他の例
class Book {
public int id;
public string title;
}
class BookWithAuthor : Book {
public string author;
}
class BookWithMultipleAuthors : BookWithAuthor {
public string[] moreAuthors; // array structure
}
class BookWithSequel : BookWithAuthor {
public Book sequel; // list structure
}
class BookWithSequelsAndSpinoffs : BookWithAuthor {
public BookWithAuthor[] sequels;
public Book[] spinoffs;
// tree structure
}
の (壊れた) 連載があり、Book[] books
本の種類に関する情報がなく、元の形式 (または同等のもの) を復元する必要があると想像してください。
また、簡単にするために C# を使用しました。これは一般的な質問です。