我正在尝试学习JSON,我了解到任何带有双引号键的javascript对象都被视为JSON对象.
我构建了这个对象
var jstr1 = {"mykey": "my value"};
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用JSON.parse(jstr1)进行解析时,我收到以下错误.看截图.
但是,当我试图解析这个
var jstr = '{"mykey": "my value"}';,
Run Code Online (Sandbox Code Playgroud)
我获得了成功,请看截图.我对此感到困惑.请解释我为什么会这样.这两种形式有什么区别.
当我将JSON作为来自任何服务的响应时,它的外观如何,是否会以jstr
或的形式出现jstr1
提前感谢您的帮助.
Koo*_*Inc 24
您正在创建一个Javascript Object
.如果你想要一个JSON字符串,请使用JSON.stringify
.
所以
var myObj = {mykey: "my value"}
,myObjJSON = JSON.stringify(myObj);
Run Code Online (Sandbox Code Playgroud)
根据评论:没有JSON 对象这样的东西.有JSON字符串,可以是parsed
Javascript对象.Javascript对象可以是stringified
JSON字符串.在JSON字符串内引用了键和值.所以上面的结果是一个包含的字符串'{"mykey":"my value"}'
.
尝试myObjJSON
在浏览器控制台中解析(使用:) ,JSON.parse(myObjJSON)
然后得到:Object {mykey: "my value"}
.
这段代码
var jstr1 = {"mykey": "my value"};
Run Code Online (Sandbox Code Playgroud)
使用Object Literal Notation创建JavaScript对象.
对于Object Literal Notation和JSON(JON是JavaScript对象表示法的简称)之间的区别,请参见:JSON和Object Literal Notation有什么区别?
从逻辑上讲,传递这些数据是没有意义的JSON.parse()
.
与您的第一个变体(var jstr = '{"mykey": "my value"}';
)的区别在于它创建了一个"原始"字符串.除原始字符序列外,您无法访问该字符串上的任何内容.使用JSON.parse()
为我们提供了一个从字符串创建的可用表单(对象).
SyntaxError:意外的令牌o
这来自于自动字符串转换jstr1
:
jstr1.toString();
// gives us [object Object]
// ----------?
Run Code Online (Sandbox Code Playgroud)
你有一些误解 JSON.parse
JSON.parse takes string and parse it to JAVASCRIPT object
JSON.stringify takes an object and parse it to a string
Run Code Online (Sandbox Code Playgroud)
这就是你运行以下内容时的原因
JSON.parse('{"a":"b"}')
Run Code Online (Sandbox Code Playgroud)
它工作,因为它需要一个json字符串
但是你跑的时候
JSON.parse({"a":"b"})
Run Code Online (Sandbox Code Playgroud)
它没有,因为对象被转换为字符串
"[object Object]"
Run Code Online (Sandbox Code Playgroud)
这里是"[object Object]"在字母处无效语法的错误 o
归档时间: |
|
查看次数: |
66423 次 |
最近记录: |