如何将 JSON 响应映射到 Angular 中的模型 4
How to map JSON response to Model in Angular 4
我已经尝试了很多,但我无法将端点响应映射到我的模型。我正在使用 HttpClient 和 Angular4。
我从服务中获取了数据,但它没有正确映射到我的模型 class。
我有以下 JSON 正在返回的服务:
{
"result": [
{
"id": "1",
"type": "User",
"contactinfo": {
"zipcode": 1111,
"name": "username"
}
}
]
}
我用打字稿创建了一个模型,我想将其映射到 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;
}
您需要在您的组件中导入接口,
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的接口
您的 "data" 是一个对象,带有 属性 "result"。 result[] 有一个名为 "contactInfo" 的 属性。在 contactInfo 中你有你想要的数据,所以
//you have no model, so NOT get<result[]>
this.http.get('url...', { headers: this.headers }).subscribe(
data => {
this.result= data.result[0].contactInfo;
}
我已经尝试了很多,但我无法将端点响应映射到我的模型。我正在使用 HttpClient 和 Angular4。 我从服务中获取了数据,但它没有正确映射到我的模型 class。
我有以下 JSON 正在返回的服务:
{
"result": [
{
"id": "1",
"type": "User",
"contactinfo": {
"zipcode": 1111,
"name": "username"
}
}
]
}
我用打字稿创建了一个模型,我想将其映射到 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;
}
您需要在您的组件中导入接口,
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的接口
您的 "data" 是一个对象,带有 属性 "result"。 result[] 有一个名为 "contactInfo" 的 属性。在 contactInfo 中你有你想要的数据,所以
//you have no model, so NOT get<result[]>
this.http.get('url...', { headers: this.headers }).subscribe(
data => {
this.result= data.result[0].contactInfo;
}