2017-03-13 69 views
1
組織下面的代碼片段

考慮下面的代碼片段通過避免太多json.getString

public static JSONObject getStudentDetails() throws Exception { 
//returns the details as json 
} 

public static JSONObject getDepartmentDetails(String department_id) throws Exception { 
//returns the details as json 
} 

public void doPost(HttpServletRequest req, HttpServletResponse res) throws Exception { 

JSONObject json1 = getStudentDetails(); 
String name = json1.getString(「name」); 
String role_number = json1.getString(「role_number」); 
String department_id = json1.getStrring(「department_id」); 
//and goes on - to get all student details 


JSONObject json2 = getDepartmentDetails(department_id); 
String department_hod = json2.getString(「department_hod」); 
String department_name = json2.getString(「department_name」); 
String department_block = json2.getString(「department_block」); 
//and goes on - till i get all the department details 

//Followed by main action to be performed 
} 

在大多數情況下我可能會調用,它返回一個JSON對象的方法UTIL上面的代碼更好的辦法我正在使用我的doGet/doPost方法。因此,我的doPost/doGet中的大部分代碼就像從getString中獲取json對象的值。有沒有更好的方法來組織上面的代碼片段?

+3

你有沒有試過像Gson或FastJSON的json解析器庫? – HendraWD

+0

不,我沒有..認爲序列化和反序列化是多個小jsons昂貴的操作...... – Natasha

+0

然後,你應該開始使用其中之一,因爲它會讓你的生活更輕鬆,使你的代碼更好,清潔器。我建議你從FastJSON開始,因爲它是性能方面最好的json解析器(串行器/解串器)。 – HendraWD

回答

1

我建議你開始使用JSON解析器庫。有一些着名的JSON解析器庫,例如:FastJSON,Jackson,Gson等。

如果您不想使用任何外部庫,爲了更簡潔的代碼,最好創建一個模型您的數據在那裏,並且在命名變量時務必儘可能清楚。由於沒有辦法避免json.getString沒有外部庫的幫助

class Student{ 
    private String name; 
    private String roleNumber; 
    private String departmentId; 

    public String getName() { 
     return name; 
    } 

    public Student setName(String name) { 
     this.name = name; 
     return this; 
    } 

    public String getRoleNumber() { 
     return roleNumber; 
    } 

    public Student setRoleNumber(String roleNumber) { 
     this.roleNumber = roleNumber; 
     return this; 
    } 

    public String getDepartmentId() { 
     return departmentId; 
    } 

    public Student setDepartmentId(String departmentId) { 
     this.departmentId = departmentId; 
     return this; 
    } 
} 

public void doPost(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception { 
    JSONObject studentJsonObject = getStudentDetails(); 
    Student student = new Student() 
      .setName(studentJsonObject.getString("name")) 
      .setRoleNumber(studentJsonObject.getString("role_number")) 
      .setDepartmentId(studentJsonObject.getString("department_id")); 

    //then you can easily get each property of student 
    //like student.getName(); or student.getDepartmentId(); 

    //the rest of your code 
}