我知道我在回收旧线程,但它是新的给我:)
我们使用多层次的为我们的POJO的反序列化JSON(杰克逊)。这里是JSON,我们可以从一个RESTful Web服务得到一个很小的例子(由):
{ success: true, response: {
sales: { item: "123", sales: 3, returns: 1 },
inventory: { item: "567", qty: 100 }
}
}
我们曾经有过设立类似的POJO:
public class Json1 {
private boolean success;
private JsonResponse response;
}
public class Json1Response {
private JsonResponseSales sales;
private JsonResponseInventory inventory;
}
public class Json1ResponseSales {
private String item;
private int sales;
private int returned;
}
public class Json1ResponseInventory {
private String item;
private int qty;
}
我们有很多的这些,并为我们可能提出的每个Web服务请求提供一个POJO。这种布局给了我们一些小问题:
请注意,这一个,相对简单的例子给了我们四个类文件来跟上。现在再乘以100秒,然后是“难度系数”为3,以说明大多数JSON比这更混乱。成千上万的文件。
字段名称在整个地方重复使用,并且根据哪个Web服务,相同的字段名称可能具有不同的内容。 (试想一下,数量可能会回来从一个web服务的字符串,从另一个诠释,再乘上100秒)。
因为这些东西捆绑在一起的父/子关系,我们决定一起去这个布局来代替。
public class Json1 {
private boolean success;
private JsonResponse response;
public class Json1Response {
private JsonResponseSales sales;
private JsonResponseInventory inventory;
public class Json1ResponseSales {
private String item;
private int sales;
private int returned;
}
public class Json1ResponseInventory {
private String item;
private int qty;
}
}
}
在这种情况下,我嵌套了两个深,但它可能更多。也许最多四层。
我倾向于同意。 – 2009-11-23 22:09:54
请注意,我不考虑匿名课程。如果您需要“轻松”访问外部变量,则这是一种必要的痛苦。然而,我强烈认为另一个匿名类是代码味道。 – 2009-11-24 09:25:17