我最近的曝光主要是針對非OOP語言的,所以想要進行下面的任何模式或練習。用於創建對象的Java模式
我需要編寫一個函數,該函數需要一個json字符串(json對象數組)並生成對象列表(如Student
)。我查了creational patterns,但似乎不合適。你認爲我應該寫一個助手類來創建這些對象嗎?
我最近的曝光主要是針對非OOP語言的,所以想要進行下面的任何模式或練習。用於創建對象的Java模式
我需要編寫一個函數,該函數需要一個json字符串(json對象數組)並生成對象列表(如Student
)。我查了creational patterns,但似乎不合適。你認爲我應該寫一個助手類來創建這些對象嗎?
如果您已經有一類util
類,這種類型的函數將很適合該類。我不會爲此做一個完全獨立的課程。舉例來說,像這樣:
public static List<Student> parseJsonToStudents(String jsonData) ...
你可以,但是,在你的Student
類的構造函數,它接受一個JSON字符串作爲參數,並從構建Student
對象。 肯定會利用面向對象的原則。但GSON package呈現了很多類似的東西過時,你可能不想麻煩編程它自己。它有fromJson()
和toJson()
這些方法可以解析數據併爲你構建對象。
你可以寫,需要一個JSON字符串,幷包含給定類型的對象的類對象,返回列表的方法:
public static <T> List<T> parseJsonList(String json, Class<T> theClass) {
// do stuff
}
用法:
List<Student> studentList = parseJsonList(studentJsonText, Student.class);
List<Teacher> teacherList = parseJsonList(teacherJsonText, Teacher.class);
由於@Jeff提到,它可能會更好地創建學生和教師接受JSON的構造函數串。
或者您可以在Student類中創建一個靜態方法,從JSON字符串創建學生列表。
或者你可以創建一個ObjectFactory類來創建不同類型的對象。
public class Action {
public static class Response {
private int _resultCode;
private int _count = 0;
public Response() {}
public int getResultCode() { return _resultCode; }
public int getCount() { return _count; }
public void setResultCode(int rc) { _resultCode = rc; }
public void setCount(int c) { _count = c; }
}
private List<Response> responses = new ArrayList<Response>();
private String _name;
}
歡迎來到SO,關於你的答案的一些解釋將是一個好主意。 – mnel
有趣的是,我在Android中使用它,並在某處使用GSON。將進一步探索。謝謝 – bsr