У меня есть ArrayList студентов, я хочу создать массив json из этого массива. Я видел примеры с ArrayList, но они не работают в моем случае.Java ArrayList <Class> to JSONArray
Мой студент Класс имеет:
String name, lastname;
ArrayList<String> courses;
Что я пробовал:
JSONObject jsonObject = new JSONObject();
JSONArray jsonPlayerArray = new JSONArray(Arrays.asList(students));
jsonObject.put("jsonPlayerArray",jsonPlayerArray);
System.out.println("AARRRAAYY: " + jsonPlayerArray.toString());
System.out.println("JSONOBJEEECCCTTT: " + jsonObject.toString());
Результаты:
AARRRAAYY: [[null,null,null,null]]
JSONOBJEEECCCTTT: {"jsonPlayerArray":[[null,null,null,null]]}
Идея, может быть, петля, хотя мой массив и добавить их по отдельности
Обновление с тестового примера
Вызов методу
Test test = new Test();
test.addData();
класса с функцией
public class Test {
ArrayList<Student> students = new ArrayList<>();
ArrayList<String> courseSet = new ArrayList<>();
public void addData(){
courseSet.add("Java");
courseSet.add("CSS");
courseSet.add("Math");
courseSet.add("Physics");
students.add(new Student("Jimmy","sad", courseSet));
students.add(new Student("Kim","don", courseSet));
students.add(new Student("Barack","Obama", courseSet));
createJSON();
}
public void createJSON(){
try {
List<Student> playerList = students;
JSONObject jsonplayerObject = new JSONObject();
JSONArray jsonPlayerArray = new JSONArray(playerList);
jsonplayerObject.put("jsonPlayerArray", jsonPlayerArray);
System.out.println("AARRRAAYY: " + jsonplayerObject.toString());
for (Student s : students) {
JSONArray jsArray = new JSONArray(s.getCourses());
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", s.getName());
jsonObject.put("lastName", s.getLastname());
jsonObject.put("courses", jsArray);
System.out.println("Json for player class: " + jsonObject.toString());
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Студент Класс:
public class Student {
String name, lastname;
ArrayList<String> courses;
public Student(String name, String lastname, ArrayList<String> courses) {
this.name = name;
this.lastname = lastname;
this.courses = courses;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLastname() {
return lastname;
}
public void setLastname(String lastname) {
this.lastname = lastname;
}
public ArrayList<String> getCourses() {
return courses;
}
public void setCourses(ArrayList<String> courses) {
this.courses = courses;
}
}
Результаты:
AARRRAAYY: {"jsonPlayerArray":[null,null,null]}
Json for player class: {"name":"Jimmy","lastName":"sad","courses":["Java","CSS","Math","Physics"]}
Json for player class: {"name":"Kim","lastName":"don","courses":["Java","CSS","Math","Physics"]}
Json for player class: {"name":"Barack","lastName":"Obama","courses":["Java","CSS","Math","Physics"]}
Ваш 'ArrayList' содержит только значения« null », конечно, это результат, который вы получите. Голосование закрывается как невоспроизводимое. –
На самом деле у меня есть значения, и теперь он работает, после того как я зациклился на массив учеников и добавил их вручную (см. Обновление). Не уверен, что формат правильный. Я имею в виду, что каждый ученик помещает JSONObject, а затем в следующий цикл переопределяет предыдущий ученик. Вопрос в том, является ли это наилучшим решением? – CookieMonster
Затем вы показали нам неправильный код для начала или неправильный результат. Если 'students' не содержит 5 значений« null », то представленный вами вывод невозможен. Измените свой вопрос, чтобы отразить ваш фактический код. –