我已经尝试了很多但是我无法将端点响应映射到我的模型。我正在使用HttpClient和Angular4。 我从服务中获取数据,但未正确映射到我的模型类。
我有以下JSON服务正在返回:
{
"result": [
{
"id": "1",
"type": "User",
"contactinfo": {
"zipcode": 1111,
"name": "username"
}
}
]
}
我在typescript中创建了一个模型,我想将其映射到json响应:
export interface result {
zipcode: number;
name: string;
}
这就是我调用JSON端点的方式。
result : string[] = [];
constructor(private http: HttpClient) { }
public getList(): result[] {
this.http.get<result[]>('url...', { headers: this.headers }).subscribe(
data => {
// 1. Data is returned - Working
console.log('data: ' + data);
this.result= data;
// This is the problem. My data is not mapped to my model. If I do following a null is returned
console.log('data mapped: ' + this.result[0].name);
},
(err: HttpErrorResponse) => {
// log error
}
);
return this.result;
}
答案 0 :(得分:7)
您需要导入组件中的界面
import { result } from '.result';
您的界面应该如下,
interface RootObject {
result: Result[];
}
interface Result {
id: string;
type: string;
contactinfo: Contactinfo;
}
interface Contactinfo {
zipcode: number;
name: string;
}
并将结果类型更改为
result : result;
并将结果指定为
this.result = data;
您可以使用http://www.jsontots.com/基于JSON
创建界面答案 1 :(得分:0)
您的&#34;数据&#34;是一个对象,具有属性&#34;结果&#34;。 result []有一个名为&#34; contactInfo&#34;的属性。在contactInfo中你有你想要的数据,所以
//you have no model, so NOT get<result[]>
this.http.get('url...', { headers: this.headers }).subscribe(
data => {
this.result= data.result[0].contactInfo;
}