Почему машинописный текст внутреннего массива недоступен в приложении Angular 5? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть следующие определения JSON:

 export class Company {
      name: string;
      trips : Trip[] = [];
    }

export class Trip{
    id: number;
    name: string;        
}

В компоненте у меня есть метод, который включает в себя следующее:

const children = this.company.trips;
console.log(children.length);

Консоль показывает "undefined" для длины, котораяозначает, что это не массив.

Это часть объекта "company" из кода Java:

@XmlElement(name = "trip")
private Set<Trip> trips = new HashSet<Trip>(0); 

Это часть объекта "company" из консоли:

{id: 1, user: {...},{...}
country: {code:"UK", id: 229}
trip: {id: 1, name: "ABC"}

Я также пытался добавить @XmlElementWrapper:

@XmlElementWrapper(name="trips")
@XmlElement(name = "trip")
private Set<Trip> trips = new HashSet<Trip>(0); 

В этом случае я получаю следующий ответ:

"trips":{"trip":{"id":1,"name":"ABC"}}}}

Мне нужномассив / список и доступ к значению через цикл, кто-то может мне помочь с этим, пожалуйста?Должен ли я что-то изменить на стороне Java?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Я решил проблему, используя список вместо массива, представление Json - это список, а не массив, так как он не содержит скобки ("[]").

const children = this.company.trips;
 for(let property of Object.values(children)){
      console.log(property.name);
  }
0 голосов
/ 04 марта 2019

Исходя из опубликованного вами ответа, это должно быть как путешествие, а не как поездка, измените определение следующим образом:

export class Company {
      name: string;
      trip : Trip[] = [];
    }

export class Trip{
    id: number;
    name: string;        
}

, и это должно работать,

const children = this.company.trip;
console.log(children.length);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...