【问题标题】:What does .json() function do in Angular2?.json() 函数在 Angular2 中有什么作用?
【发布时间】:2016-12-13 14:25:34
【问题描述】:

Angular2中http请求中的.json()函数有什么作用?

示例代码:

this.http.get('http://localhost:8080/getName')
.subscribe(res => this.names = res.json());

我猜它类似于 javascript 的 JSON.parse()

【问题讨论】:

  • 方法来自Fetch规范,定义为here

标签: javascript json angular


【解决方案1】:

此函数从 Http 调用中获取响应,并对其进行解析(就像 JSON.parse(..) 一样)。注意,如果返回的不是json,会报错。

【讨论】:

  • 让我感到困惑的一件事是要理解的关键是它似乎不仅仅是将整个响应转换为 json。它仅将响应的主体转换为 json。我发现这很重要,因为来自 Http 的响应实际上是一个包含正文、标头等的响应对象,但是在调用 res.json() 之后,只有正文对象被转换。
【解决方案2】:

您可以查看源代码以了解其功能。但正如@uksz 所说,它只是解析json,使用JSON.parse

源码是这样的:

    /**
     * Attempts to return body as parsed `JSON` object, or raises an exception.
     */
    Body.prototype.json = function () {
        if (typeof this._body === 'string') {
            return JSON.parse(this._body);
        }
        if (this._body instanceof ArrayBuffer) {
            return JSON.parse(this.text());
        }
        return this._body;
    };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2018-11-19
    • 2014-05-23
    • 2017-06-19
    相关资源
    最近更新 更多