我正在学习JSON,但Microsoft和w3school提供了有关语法的不同信息。
我被困在哪一个是正确的。
根据微软
JSON:
{firstName: "Rick", lastName: "Delorme", hairColor: "brown", eyeColor: "brown" }
此外,根据Microsoft选项 D。是正确的 JSON 语法
根据w3School
这是JSON
{ "name":"John" }
这是java script-object
{firstName: "Rick", lastName: "Delorme", hairColor: "brown", eyeColor: "brown" }
答案 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)
答案 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'
希望你能在键/值对中使用双引号