Сначала необходимо отобразить ответ и преобразовать его из JSON в простые объекты / классы JS / TS. Это может выглядеть примерно так
getData():Observable<Post[]> {
return this.http.get<Post[]>(this.posturl)
.map((resonse) => {
return response.json().map((entry): Post => {
// convert your stuff here and return proper type
const result: Post = {
userId: result.userId,
id: result.id,
title: result.title,
body: result.body,
};
return result;
})
})
.subscribe((result) => {
console.log(result);
});
}
Примечание: не забудьте импортировать функцию карты
import 'rxjs/add/operator/map';
Редактировать: Обновлен мой ответ с правильным преобразованием. Для интерфейсов это довольно просто, и вы можете даже напрямую использовать его. (Тем не менее, я предпочитаю использовать явный способ, чтобы гарантировать, что останутся только правильные свойства и не будут случайно переданы некоторые нежелательные. Для классов это даже лучше, тогда вы можете добавить новый Class () и вернуть его, и ваш ответ всегда будет иметь классы .
Второе примечание: это предполагает, что ваш результат json является массивом. В противном случае .json (). Map () не будет работать, и вам это не нужно. Я бы предложил отладить response.json (), чтобы лучше понять, что возвращается:)