JSON オブジェクトとして扱うことができるプロパティ マップのキーと値を検証する Java プログラムを作成しています。現在、深くネストされた if-else を使用して検証していますが、非常にエラーが発生しやすくなっています。これがどの設計パターンでも簡単に解決できるかどうかはわかりません。
例として、プレーヤー プロパティ マップを取り上げます。
'player' = {'name': 'player1',
'age': 18,
'race': 'human',
'skills': 'pick pocket',
'misc': { 'hoppy': 'sleep', 'exp': 238459 }
};
いくつか検証したい
一部のキーと値のペアは必須
nameです。like はplayerプロパティ マップで必須ですが、必須でmiscはありません。age値が整数である必要があるように、一部の値は特定の型である必要があります。一部の値は、 , のように列挙型ですが
race、human他elfにはdrawf何もありません。一部のキーは他のキーに依存します。キーが指定されている場合
Aは、Bキーも指定する必要があります。countryに依存する場合'race': 'human'のように、{'race': 'human', 'country': 'midearth'}有効です。{'race': 'human', 'enemy': 'ghost'}、{'race': 'human'}ありません。値はマップでもかまいません。そのマップの値は同じ型である必要はありません。
このプロパティ マップは、将来拡張される予定です。拡張性を高めるにはどのような設計が必要ですか?