javascript - 相同输入的 json.parse 的不同行为?

标签 javascript json string

这个问题是关于

why the outputs are different

不是我怎样才能获得正确的输出。

我无法理解为什么以下两种情况的输出不一样,即使我为 JSON.parse() 函数提供相同的参数也是如此。

第一个场景

obj = {a:"asdf"};
var newObj = JSON.parse(JSON.stringify(obj));     //newObj = {a:"asdf"}

调试 Debugging view

第二种情况

var newObj = JSON.parse("{"a":"asdf"}");        //this gives an error

最佳答案

问题出在引号上。

var newObj = JSON.parse('{"a":"asdf"}');

应该可以正常工作。

在 Javascript 中,我们使用引号(单引号或双引号)来表示字符串。当您想定义一个包含引号的字符串时,您必须使用不同的引号,或者使用反斜杠 \ 字符转义引号。

var newObj = JSON.parse("{\"a\":\"asdf\"}");

也可以正常工作。

你可能会认为

var newObj = JSON.parse("{'a':'asdf'}");

可以,但不行。在 JSON 中,字符串仅使用双引号定义。

关于javascript - 相同输入的 json.parse 的不同行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40420724/

相关文章:

javascript - 对其他页面的 AJAX 请求不起作用

javascript - 从 WebMethod 和 sammy.js 返回 JSON 数据

json - 递归数据模型的golang json序列化/反序列化

ios - 使用 Alamofire 将 Json 发布到 API?

java - Java将随机字符组合成字符串

javascript - Foundation 6 向下钻取动画速度

javascript - 使用注释移动Google图表列注释位置: line

python - 查找并修改Python嵌套字典(键,值)

c++ - 如何在不使用 variable_name.at() 的情况下引用字符串的最后一个字符?

c - 为什么这段 C 代码不更改字符串并导致缓冲区溢出?