【发布时间】:2017-10-27 09:45:37
【问题描述】:
我在将 Json 文件转换为 Arraylist 时遇到问题,我使用了 2 种方法:
这是我的 JSON:
[
{
"NICN":"1",
"DOB":"Thu Jan 01 00:00:00 SRET 1998",
"Gender":77,
"Module":[
{
"Module ID":"2",
"Assignment Score":0,
"Exam Score":0
},
{
"Module ID":"3",
"Assignment Score":0,
"Exam Score":0
},
{
"Module ID":"4",
"Assignment Score":0,
"Exam Score":0
}
],
"DOJ":"Wed Jan 01 00:00:00 SRET 1997",
"Nationality":"1",
"StudentID":"S000000",
"Name":"James"
}
]
这是第一种方法:JSON解析:
ArrayList<Student> CurStudentList = new ArrayList<>();
Student CurStudentObj = new Student();
//Read From File
try {
JSONArray baseJSONResponse = new JSONArray("JSON1.json");
for (int i = 0; i < baseJSONResponse.length(); i++) {
JSONObject StudentObj = baseJSONResponse.getJSONObject(i);
CurStudentObj.setmStudentID(StudentObj.getString("StudentID"));
CurStudentObj.setmName(StudentObj.getString("Name"));
CurStudentObj.setmGender(StudentObj.getString("Gender").charAt(0));
String TempDOB = (StudentObj.getString("DOB"));
SimpleDateFormat sdf = new SimpleDateFormat("EEE MM dd HH:mm:ss z yyyy");
try {
Date dDOB = sdf.parse(TempDOB);
CurStudentObj.setmDateOfBirth(dDOB);
} catch (ParseException e) {
e.printStackTrace();
}
CurStudentObj.setmNICN(StudentObj.getString("NICN"));
String TempDOJ = (StudentObj.getString("DOJ"));
try {
Date dDOJ = sdf.parse(TempDOJ);
CurStudentObj.setmDateJoined(dDOJ);
} catch (ParseException e) {
e.printStackTrace();
}
CurStudentObj.setmGender(StudentObj.getString("Gender").charAt(0));
JSONArray array = StudentObj.getJSONArray("Module");
for (int a = 0; a < 3; a++) {
JSONObject ArrayOne = new JSONObject();
CurStudentObj.setmModules((ArrayOne.getString("Module ID")), Integer.parseInt(ArrayOne.getString("Assignment Score")), Integer.parseInt(ArrayOne.getString("Exam Score")));
}
}
这是发生的错误,可能是解析错误:
org.json.JSONException: A JSONObject text must begin with '{' at 1 [character 2 line 1]
at org.json.JSONTokener.syntaxError(JSONTokener.java:432)
at org.json.JSONObject.<init>(JSONObject.java:184)
at org.json.JSONObject.<init>(JSONObject.java:310)
at Register.Student(Register.java:30)
at Main.main(Main.java:22)
我目前想在我的程序 ArrayList 中读取我的 Json 文件和存储。这样我就可以编辑信息,可以通过再次写入文件来更新。
我在网上搜索了另一种使用 Gson 的方法,你不需要解析,只需添加到 Arraylist 但它只适用于ArrayList<String>。非自定义ArrayList<Student>
【问题讨论】:
标签: java json parsing arraylist