我最近的曝光主要是针对非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