假设我有一个用 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
]
}
]
}
非常感谢任何帮助。-伊戈尔。