JSON和javascript对象之间的区别[重复]

Posted

技术标签:

【中文标题】JSON和javascript对象之间的区别[重复]【英文标题】:difference beetween JSON and javascript object [duplicate] 【发布时间】:2015-12-16 13:06:12 【问题描述】:

我看不出两者之间的区别:

self.todos = [
    "todo": 
        "title": "title",
        "content": "lorem"
    
, 
    "todo": 
        "title": "title",
        "content": "lorem"
    
];

    self.todos = [
    todo: 
        title: "title",
        content: "lorem"
    
, 
    todo: 
        title: "title",
        content: "lorem"
    
];

两者都可以在我的代码中使用,但只有第一个非常适合 JSON (online JOSON veryfier)。是否有偏好使用什么。

非常感谢

【问题讨论】:

【参考方案1】:

JSON 和 javascript 文字之间的严格区别仅在于您如何使用它。

JSON 是一种表示数据的文本格式。 JavaScript 文字是 JavaScript 代码的一部分。

您不能在 JavaScript 代码中使用 JSON,因为根据定义,它不再是 JSON,而是 JavaScript。但是,您可以采用 JSON 并使用 as JavaScript 代码。您还可以在 JavaScript 中的字符串中包含 JSON。

JSON 语法是 JavaScript 文字语法的子集,因此您可以将任何 JSON 用作 JavaScript,但您不能将任何 JavaScript 文字用作 JSON。

这是 JSON 的一个示例:

[
  "todo": 
    "title": "title",
    "content": "lorem"
  
]

您可以将其用作 JavaScript:

var arr = [
  "todo": 
    "title": "title",
    "content": "lorem"
  
];

您还可以将 JSON 作为字符串并将其解析为 JavaScript 值:

var json = '[ "todo":  "title": "title", "content": "lorem"  ]';
var arr = JSON.parse(json);

请注意,解析 JSON 不会将 JSON 用作 JavaScript,它会读取 JSON 并创建与其对应的 JavaScript 值。 (在 JSON 解析可用之前,eval 函数用于解析 JSON,这实际上会将 JSON 用作 JavaScript。JSONP 请求仍然使用 JSON 作为 JavaScript,因为它使用脚本标签加载数据。)

JavaScript 不那么严格,并且不需要分隔符作为可用作标识符的对象属性名称。此外,您可以在创建 JavaScript 文字时使用表达式:

var arr = [
  todo: 
    title: document.title,
    content: "lo" + "rem"
  
];

如果您使用该 JavaScript 文字并尝试将其用作 JSON,则语法错误。

【讨论】:

非常感谢您的详细回复,我想我现在明白了【参考方案2】:

如果您正在编写JSON,则必须符合 JSON 规则,其中包括属性名称必须用双引号括起来的事实。 (并且字符串必须是双引号,而不是单引号,并且没有 undefined 或函数以及其他各种东西......)

你写的很清楚不是 JSON,但是,它是 JavaScript 代码;我可以从self.todos = 部分看出。因此,您可以在属性名称上不使用引号、单引号或双引号;由你决定。有些属性名称需要引号,例如当属性名称有空格时:

var o = 
    "I have a space": 42
;

主要区别在于 JavaScript 源代码是源代码,而 JSON 是一种用于数据交换的文本符号,是 JavaScript 源代码一小部分的简化版本。当你处理 JavaScript 源代码时,你不是在处理 JSON,除非你在处理字符串(例如,一个包含 JSON 的字符串,你可能会解析或发送到服务器或类似的东西)。

【讨论】:

同他不能在js中使用函数:)

以上是关于JSON和javascript对象之间的区别[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JSON 和 JavaScript 对象有啥区别? [复制]

text/javascript 和 application/javascript 之间有啥区别 [重复]

JavaScript中==和===之间的区别[重复]

Javascript ES6 ()=>() 和 ()=> 之间的区别 [重复]

javascript中点表示法和括号表示法之间的区别[重复]

JavaScript promises中错误处理参数和catch之间的区别[重复]