哪个是JSON的正确语法?

时间:2017-02-09 05:28:20

标签: javascript json

我正在学习JSON,但Microsoftw3school提供了有关语法的不同信息。

我被困在哪一个是正确的。

根据微软

JSON:

 {firstName: "Rick", lastName: "Delorme", hairColor: "brown", eyeColor: "brown" }

此外,根据Microsoft选项 D。是正确的 JSON 语法 enter image description here

根据w3School

这是JSON

{ "name":"John" }

这是java script-object

{firstName: "Rick", lastName: "Delorme", hairColor: "brown", eyeColor: "brown" }

7 个答案:

答案 0 :(得分:1)

W3School定义的语法,即{ "name":"John" }是正确的。您可以通过JSONLint验证任何JSON。尝试尝试两者。

答案 1 :(得分:1)

W3school的格式是编写JSON的正确格式! 如果你想在JSON中只传递一个参数,那么你将使用

{"name":"John"}

对于多个参数,它将是,

{
   "user1" : {
      "name" : "mahesh",
      "password" : "password1",
      "profession" : "teacher",
      "id": 1
   },
   "user2" : {
      "name" : "suresh",
      "password" : "password2",
      "profession" : "librarian",
      "id": 2
   },
   "user3" : {
      "name" : "ramesh",
      "password" : "password3",
      "profession" : "clerk",       
      "id": 3
   }
}

答案 2 :(得分:1)

尝试使用JSONLint验证您的json,根据w3学校,正确的是{“name”:“John”}。

也可以查看answer。这可能有所帮助。

答案 3 :(得分:0)

W3School语法是正确的。

答案 4 :(得分:0)

阅读w3schools的link,您将获得JSON和JavaScript对象的区别。

This MSDN 的链接,您可以在其中验证 Microsoft 的JSON语法。

JSON语法是JavaScript语法的一个子集。

JSON语法规则

JSON语法源自JavaScript对象表示法语法:

  • 数据名称/值对
  • 数据以逗号分隔
  • 大括号持有物品
  • 方括号包含数组

JSON名称需要双引号。 JavaScript名称没有。

在JSON中,键必须是字符串,用双引号编写: {“name”:“John”}

在JavaScript中,键可以是字符串,数字或标识符名称: {name:“John”}

答案 5 :(得分:0)

简短的回答是这些都遵循相同的核心格式,但有一个区别 - JSON在名称周围使用双引号,而JavaScript则没有。您列出的格式规范之间的区别是双引号(“)的显示,以包围JSON对象名称/值对的名称部分。

官方ECMA JSON Data Interchange Format文档明确指出名称/值对的名称部分必须用引号括起来。有关更简洁的摘要,请参阅http://json.org/。但是,JSON特别指出JSON中的对象表示法是通过指定前面的字符串和冒号后面的值(构成名称/值对)来明确定义的,并且这两个部分都用大括号括起来: / p>

  

对象结构表示为一对花括号标记   包含零个或多个名称/值对。名称是一个字符串。一个   单个冒号标记跟在每个名称后面,将名称与   价值(再次来自ECMA JSON Data Interchange Format

规范进一步详细说明:

  

字符串是一系列用引号括起来的Unicode代码点   标记

由于对象的定义是名称/值对,其中

  

“名称是字符串”(同一document的第6部分)

可以推断,在引用JSON时,名称应该始终用引号封装(尽管不是JavaScript)。

JSON本身的字面意思是“JavaScript Object Notation”,这意味着它的起源在很多JavaScript的使用范围内。在JavaScript本身中,这个:

{ name: "value portion" }

实际上相当于:

{ "name": "value portion" }

始终假设的问题,在JavaScript中编码时,这是一个很好的做法,即JSON字符串/对象的名称/值对的名称部分可能包含空格,例如

{ "name portion": "value portion" }

在这种情况下,以下语法不正确:

{ name portion: "value portion" }

出于这个原因,许多编程JavaScript的人选择在名称/值对象的名称部分周围使用双引号,以便在构造或使用期间保持与JSON对象的兼容性。

答案 6 :(得分:0)

以防万一

{
name:"Rishabh"}

Error: Parse error on line 1:
{   name: "Rishabh"}
--^
Expecting 'STRING', '}', got 'undefined'

希望你能在键/值对中使用双引号