JSON.parse() 与。 .json()

     2023-02-27     109

关键词:

【中文标题】JSON.parse() 与。 .json()【英文标题】:JSON.parse() Vs. .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);
  );
);

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

【问题讨论】:

您能出示您的代码吗? @fool-dev 你读过这个问题吗? 我添加了例子 可能与What is the difference between the Fetch API and XMLHttpRequest? 重复? @tsh 链接的问题如何解决当前问题的查询? 【参考方案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) 使用的承诺,并通过承诺访问数据。为什么第一个示例有效?谢谢。

json.parse()与json.stringify()

JSON.parse()将字符串转成JSON举个例子varstr=‘{"name":"cn","age":"2"}‘JSON.parse(str)结果:Objectage:"2"name:"cn"__proto__:Object注意:单引号写在{}外,每个属性名都必须用双引号,否则会抛出异常。 JSON.stringify将JSON对象转换为字符串vara={a:1,... 查看详情

json.parse()与json.stringify()的区别

JSON.parse()【从一个字符串中解析出json对象】例子://定义一个字符串vardata=‘{"name":"goatling"}‘//解析对象??JSON.parse(data)结果是:?name:"goatling"JSON.stringify()【从一个对象中解析出字符串】vardata={name:‘goatling‘}JSON.stringify(data)结果是... 查看详情

json.parse()与json.stringify()

JSON.parse()方法用来解析JSON字符串,构造由字符串描述的JavaScript值或对象。提供可选的reviver函数用以在返回之前对所得到的对象执行变换(操作)。语法JSON.parse(text[,reviver])参数text要被解析成JavaScript值的字符串,查看JSON对象学习... 查看详情

json中eval与parse的区别

json的的解析方法 (非原创)json的解析方法共有两种:eval_r()和JSON.parse(),使用方法如下:varjsonData=‘{"data1":"Hello,", "data2":"world!}‘;varevalJson=eval_r(‘(‘+jsonData+‘)‘);varjsonParseJson=JSON.parse(jsonData);这样就把js 查看详情

json.parse与eval的区别

JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别。测试代码varA="{a:1,b:‘hello‘}";varB="{‘a‘:1,‘b‘:‘hello‘}";varC="{‘a‘:1,‘b‘:‘hello‘}";varD=‘{"a":1,"b":"hello"}‘;varE=‘{"a":1,"b":"hello"}‘;varF=‘{"a":1, "b":"h 查看详情

json.parse与eval的区别

JSON.parse与eval和能将一个字符串解析成一个JSON对象,但还是有挺大区别。测试代码varA="{a:1,b:‘hello‘}";varB="{‘a‘:1,‘b‘:‘hello‘}";varC="{‘a‘:1,‘b‘:‘hello‘}";varD=‘{"a":1,"b":"hello"}‘;varE=‘{"a":1,"b":"hello"}‘;varF=‘{"a":1, "b":"h 查看详情

assign()与json.parse(json.stringify())深拷贝弊端

Object.assign()只是一级属性复制,比浅拷贝多深拷贝了一层而已。json.parse()就有很多了,请移步https://blog.csdn.net/u013565133/article/details/102819929 查看详情

js中json.stringify()与json.parse()与eval()详解及使用案例

...机器解析和生成(一般用于网络传输速率)。 (1)JSON.parse函数  作用:将json字符串转换成json对象。语法:JSON.&n 查看详情

javascript中json.parse()与eval()解析json的区别

varjsonData=‘{"data1":"Hello,","data2":"world!"}‘调用方法jsonData.data1,jsonData.data2   jsonData=[  {"name":"LiLei","age":19,"sex":"male"}, {"name":"HanMei","age":18,"sex":" 查看详情

json.parse()

JSON.parse()JSON通常用于与服务端交换数据。在接收服务器数据时一般是字符串。我们可以使用JSON.parse()方法将数据转换为JavaScript对象。语法JSON.parse(text[,reviver]) 参数说明:text:必需,一个有效的JSON字符串。reviver: 可选,一... 查看详情

37.javascript对象与json格式的转换,json.stringifyjson.parse方法的使用方法和注意事项(代码片段)

...替换映射函数格式化使用的空格数量自定义toJSON方法JSON.parse使用reviver总结JSON处理JSON(JavaScriptObjectNotation)是JavaScript表达值和对象的通用数据格式,其本质就是符合一定规范的字符串。由于JSON的优良特性 查看详情

没有严格模式的 JSON.parse

】没有严格模式的JSON.parse【英文标题】:JSON.parsewithoutStrictMode【发布时间】:2012-03-0503:21:18【问题描述】:我正在阅读JohnResigblog关于javascript中的严格模式,但我有一个问题。StrictMode的特点之一是使用JSON.parse和JSON.stringify,但... 查看详情

json与string之间互转

一,String转json这个JSON.parse()与eval()都可以实现,但是它们是有区别的,JSON.parse对json字符串要求比eval()更为严格,key名称(例如name)全部必须有双引号。而eval必须用括号将json字符串括起来才能成功转换,key名称(例如name)有无双引号都可... 查看详情

json.parse()和jquery.parsejson()的区别

jQuery.parseJSON(jsonString):将格式完好的JSON字符串转为与之对应的JavaScript对象  (jquery方法)123var str= ‘[{"href":"baidu.com","text":"test","orgId":123,"dataType":"curry","activeClass":"haha"}]‘;&nbs 查看详情

json.parse()和json.stringify()

JSON.parse()和JSON.stringify():parse用于从一个字符串中解析出json对象,如下:varstr=‘{"name":"huangxiaojian","age":"23"}‘结果:JSON.parse(str) Objectage: "23"name: "huangxiaojian"__proto__: Objectstringi 查看详情

Javascript JSON.parse 字符串 onclick 内联

】JavascriptJSON.parse字符串onclick内联【英文标题】:JavascriptJSON.parsestringonclickin-line【发布时间】:2018-11-1802:13:32【问题描述】:我正在使用jquery将HTML附加到ID;具体来说,我无法将JSON格式的字符串放入元素的onclick参数中。我故意... 查看详情

json.parse()和json.stringify()

JSON.parse():把json格式的字符解析成json对象。          例如:varstr=‘{‘a‘:1,‘b‘:2}‘;              JSON.parse(str )             结果为:Object: {a:1,b:2} JSON.stringify():... 查看详情

json.parse()和json.stringify()

json.parse()用于从一个字符串解析出json对象varstr=‘{"name":"huangzhong","age":"23"}‘json.parse(str)stringify()用于从对象解析出字符串vara={a:1,b:2}json.stringify(a)‘{"a":1,"b":2}‘ 查看详情