[英]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.