簡體   English   中英

JSON.parse() 對比 .json()

[英]JSON.parse() Vs. .json()

我最近一直在使用 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);
  });
});

有人可以解釋一下這些看似相似的概念之間的區別嗎? 謝謝

Body.json()是異步的,並返回一個解析為 JavaScript 對象的Promise對象。 JSON.parse()是同步的,可以解析字符串並更改結果返回的 JavaScript 對象。

“AJAX”與“回調”一起使用; 'fetch' 與 'promises' 一起使用。 使用 JSON.parse() 解析 AJAX 的響應。 使用 json() 解析響應以進行 fetch。

在我看來 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()

使用它們中的任何一個都將提供完整的響應主體和對其功能的理解。

Body mixin 的 json() 方法接受一個Response流並讀取它完成。 它返回一個承諾,該承諾將正文文本解析為 JSON 的結果進行解析。 JSON.parse() 方法解析JSON 字符串,構造由字符串描述的 JavaScript 值或對象。

使用 JSON.parse() 解析 AJAX 的響應。 使用 json() 解析響應以進行 fetch。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM