JSON和javascript对象之间的区别

时间:2015-09-19 12:04:01

标签: javascript json

我看不出:

之间的区别
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)。是否有偏好使用什么。

非常感谢

2 个答案:

答案 0 :(得分:4)

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

您正在撰写的内容不是 JSON,但是,它的JavaScript代码;我可以从self.todos =部分说出来。因此,您可以在属性名称上不使用引号,单引号或双引号;它取决于你。有一些属性名称需要引号,例如当属性名称有空格时:

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

关键区别在于JavaScript源代码是源代码,而JSON是数据交换的文本符号,它是JavaScript源代码的一小部分的简化版本。当您处理JavaScript源代码时,除非您正在处理字符串(例如,包含JSON的字符串,您可能会解析或发送到服务器或类似字符串),否则您不会处理JSON。 )。

答案 1 :(得分:4)

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

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

你不能在JavaScript代码中使用JSON,因为它根据定义不再是JSON,它是JavaScript。但是,您可以使用JSON并将用作 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,则语法错误。