Хорошо, у меня есть файл JSON, и у него есть набор объектов, которые я хочу размонтировать в массив объектов.Модель привязки данных Jackson Data Unmarshalling array
Пример того, как файл в формате JSON выложена является:
{
"data":{
"name":{
"fName":"John",
"lName":"Doe"
},
"name":{
"fName":"James",
"lName":"Dokes"
}
}
}
Полный файл JSON является гораздо более сложным, чем это, это просто пример того, как он выкладывается.
Что я хочу сделать, это взять эти имена и развязать их в массив объектов имен, чтобы я мог получить доступ к каждому объекту имени всякий раз, когда захочу.
классы создаются как
испытаний Класс
private Data data;
public void setData(Data d) {
data = d;
}
public Data getData() {
return data;
}
public String toString() {
return "" + data;
}
данных Класс
private Name name;
public void setName(Name n){
name = n;
}
public Name getName(){
return name;
}
public String toString(){
return "Names " + name;
}
Тогда класс Name просто
public class Name {
private String fName;
private String lName;
//Getter setters here
public String toString(){
return "\nFirstName: " + fName + "\nLastName: " + lName;
}
Затем в главном классе , Я просто
ObjectMapper mapper = new ObjectMapper();
Test test = mapper.readValue(new File("C:\\JSON\\test.json"),
Test.class);
System.out.println(test);
Теперь это напечатает
Names
FirstName: James
LastName: Dokes
Но она игнорирует первый объект имени, то есть Джон Доу. Я хочу, чтобы взять каждый из этих объектов имен и поместить их в ArrayList, таким образом я могу получить доступ к информации и отображать ее, когда захочу.
Что я здесь делаю неправильно? Я попытался изменить файл JSON и сделать имена в массив, а затем изменить код в классе данных и создание Имен массива имен объектов, но получил ошибку говоря
Can not deserialize instance of Data out of START_ARRAY token
ли кто-нибудь сможет указать я в правильном направлении здесь, как и многие другие решения, но не добился успеха.
Заранее спасибо за любую помощь
EDIT:
Должен ли мой JSON выглядеть следующим образом тогда
{
"data":{
"name":[
{
"fName":"John",
"lName":"Doe"
},
{
"fName":"test",
"lName":"test2"
}
]
}
}
Хорошо, я быстро обновил сообщение.Должен ли мой JSON выглядеть так, как я обновил свой пост? – AdamM
, что JSON выглядит более логичным. Чтобы сопоставить это с Java POJO, вам нужно представить массив 'name' как' List 'в вашем классе Data. –
Большое спасибо, он отлично работает сейчас! – AdamM