json - 如何将 JSON 响应映射到 Angular 4 中的模型

标签 json angular angular4-httpclient

我已经尝试了很多,但我无法将端点响应映射到我的模型。我正在使用 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;
    }

最佳答案

您需要在组件中导入接口(interface),

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 的接口(interface)

关于json - 如何将 JSON 响应映射到 Angular 4 中的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277372/

相关文章:

arrays - 如何快速访问 if 语句之外的数据

c# - 使用 json.net 和 linq 在 json 中查找模式

Angular 8 - *ngIf 和 mat-checkbox 不起作用

java - 使用 JSON 参数简化 REST URL

node.js - 从实时数据库获取 json 数据到 Dialogflow 内联编辑器(谷歌助手)

node.js - 平均堆栈 : can't display data from a single Mongodb element by it's id

javascript - Angular 4 和 Node.js

angular - 如何通过 Angular 5 中的 `httpclient` 删除请求传递正文

angular - NullInjectorError : No provider for HttpHandler! 尽管存在 HttpClient/HttpClientModule

angular - 获取将由 router.navigate 生成的 URL