【问题标题】:JSON.parse() Vs. .json()JSON.parse() 与。 .json()
【发布时间】:2018-06-25 23:59:07
【问题描述】:

我最近一直在使用 fetch API 和 Promises,我遇到了 .json() 。 .json() 通常返回与 JSON.parse 相同的输出。我用谷歌搜索了这个问题,结果指向了其他方向。

XHR 和 JSON.parse 示例:

$('#xhr').click(function(){
  var XHR = new XMLHttpRequest();

  XHR.onreadystatechange = function(){
    if (XHR.status == 200 && XHR.readyState == 4) {
      $('#quote').text(JSON.parse(XHR.responseText)[0]);
    }
  };

  XHR.open("GET", url);
  XHR.send();
});

Fetch API 示例:

$('#fetch').click(function(){
  fetch(url)
  .then(function(res){
    return res.json();
  })
  .then(function(quote){
    $('#quote').text(quote);
  })
  .catch(function(err){
    handleError(err);
  });
});

有人能解释一下这些看似相似的概念之间的区别吗? 谢谢

【问题讨论】:

标签: javascript json fetch


【解决方案1】:

“AJAX”与“回调”一起使用; 'fetch' 适用于 'promises'。

使用 JSON.parse() 解析 AJAX 的响应。 使用 json() 解析获取的响应。

【讨论】:

    【解决方案2】:

    Body mixin 的 json() 方法接受一个 Response 流并将其读取完成。它返回一个 Promise,该 Promise 解析为将正文文本解析为 JSON 的结果。 JSON.parse() 方法解析 JSON 字符串,构造字符串描述的 JavaScript 值或对象。

    使用 JSON.parse() 解析 AJAX 的响应。使用 json() 解析获取的响应。

    【讨论】:

      【解决方案3】:

      在我看来 res.json 和 JSON.parse 的功能相同。优先考虑 res.json 是因为它的语法。 分享示例以便更好地理解...

       this.service.userFunction() //calling service
      .then((res) => {
       this.userdetails = JSON.parse(res._body); //use this
       this.userdetails = res.json(); // or use this syntax any one
       )}
      .catch()
      

      使用其中任何一个都将提供完整的响应正文和对其功能的理解。

      【讨论】:

      • res.json() 返回一个promise,所以在返回它之后,你需要附加一个then(data){ this.userdetails = data }
      【解决方案4】:

      Body.json() 是异步的,并返回解析为 JavaScript 对象的 Promise 对象。 JSON.parse() 是同步的,可以解析一个字符串并改变结果返回的 JavaScript 对象。

      【讨论】:

      • 感谢您的回复。 :)
      • Body.json() 返回一个承诺 - 但我看到一些使用 data = Body.json() 的示例,因此直接访问数据 - 显然没有解开承诺 - 但在其他示例中我查看通过 .then(data) 使用的承诺,并通过承诺访问数据。为什么第一个示例有效?谢谢。
      猜你喜欢
      • 2012-05-08
      • 2010-12-23
      • 2019-05-10
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 2017-03-02
      • 2014-10-04
      • 1970-01-01
      相关资源
      最近更新 更多