// pseudocode
Npc[] npcs;
for (jsonNPC : jsonNPCs) {
Quest[] quests;
for (jsonQuest : jsonNPC.quests) {
quests.add(new Quest(jsonQuest.get(foo), jsonQuest.get(bar), ...));
}
npcs.add(new Npc(jsonNPC.get(name), quests, ...));
}
これは正常に動作しますが、それもっと複雑になる。我々は今、クエストが他のQuest
インスタンスを「前提条件のクエスト」として参照させたいと考えています。
参照するクエストは、参照クエストが構築された後でのみ解析される可能性があります(入力データが順序付けられていないか、NPC間で双方向参照がある可能性があります)。つまり、建設時にそれを取り付けることはできません。しかし、Quest
は不変なので、我々はする必要があります。
このような問題は通常どのように解決されますか?
(注:何の循環参照はありません助けるべきだと、私は思う)
"クエストが注文されていない場合" - そうです。しかし、一時的なグラフは動作します。 –
どのjsonパーサーを使用しますか?私は、オブジェクトのプライベートフィールドをjsonデータで埋める[google gson](http://code.google.com/p/google-gson/)に満足しています。したがって、他のクラスのプライベートフィールドに依存することはできないため、常に独自のjson-data保持クラスを作成する必要があります。私はgsonにjsonを解析して自分のクラスの構造にしてから、これらを通って必要なオブジェクトを作成させます。 – Yogu
JSONデータはGsonにとって複雑すぎます。それは、解決される必要がある参照、異なるクラスに変換する必要がある型パラメータなどを含みます。 –