我知道我在回收舊線程,但它是新的給我:)
我們使用多層次的爲我們的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