次のように Java で実装されたパラメーター化されたツリーがあるとします。
public class Tree<E> {
private static class Node {
E element;
List<Node> children.
}
Node root;
//... You get the idea.
}
ここでの考え方は、上記の実装はツリーのトポロジのみに関係しており、インスタンス化によってツリーに格納される要素については何も知らないということです。
ここで、ツリー要素を地理にしたいとします。それらがツリーで編成されている理由は、大陸には国が含まれ、国には州または州が含まれるなどの理由があります。簡単にするために、地理には名前とタイプがあります。
public class GeoElement { String name; String type; }
最終的に、地理階層は次のようになります。
public class Geography extends Tree<GeoElement> {}
ではジャクソン連載へ。Jackson シリアライザーがフィールドを認識できると仮定すると、この実装の直接シリアライズは次のようになります。
{
"root": {
"element": {
"name":"Latin America",
"type":"Continent"
}
"children": [
{
"element": {
"name":"Brazil",
"type":"Country"
},
"children": [
// ... A list of states in Brazil
]
},
{
"element": {
"name":"Argentina",
"type":"Country"
},
"children": [
// ... A list of states in Argentina
]
}
]
}
この JSON レンダリングは、Tree および Node クラスからの不要なアーティファクト、つまり「ルート」と「要素」が含まれているため、適切ではありません。代わりに必要なのはこれです:
{
"name":"Latin America",
"type":"Continent"
"children": [
{
"name":"Brazil",
"type":"Country"
"children": [
// ... A list of states in Brazil
]
},
{
"name":"Argentina",
"type":"Country"
"children": [
// ... A list of states in Argentina
]
}
]
}
どんな助けでも大歓迎です。-イゴール。