我正在看这个问题
What is JSON and why would I use it?
我对给予JSON结构的不同名称感到困惑
示例1:这是什么叫
{
"MIT_COLLEGE": [
{
"_id": 1,
"StudentName": "Sam",
"Student_Age": "24",
"Student_phone": "8725436232",
"Student_sex": "Male",
},
{
"_id": 2,
"StudentName": "kira",
"Student_Age": "22",
"Student_phone": "8725136232",
"Student_sex": "Female",
}
],
"CAMBRIDGE_COLLEGE": [
{
"_id": 1,
"StudentName": "Paul",
"Student_Age": "26",
"Student_phone": "87333336232",
"Student_sex": "Male",
},
{
"_id": 2,
"StudentName": "michael",
"Student_Age": "22",
"Student_phone": "872115436232",
"Student_sex": "Male",
}
]
}
示例2 :: 这是什么叫
{
"_id": 2,
"StudentName": "michael",
"Student_Age": "22",
"Student_phone": "872115436232",
"Student_sex": "Male",
}
JSON中的其他可能结构及其名称是什么?
谢谢...希望我很清楚
答案 0 :(得分:2)
唯一的区别在于规格:
以下是不同之处:
在六个中的任何一个之前或之后允许不重要的空格 结构特征。(RFC 4627)
任何令牌之前或之后都允许使用无效的空格。(ECMA-404)
JSON文本应以Unicode编码。默认编码为UTF-8。 (RFC 4627)
JSON文本是由Unicode代码点形成的符号序列,符合JSON值语法。 (ECMA-404)
实现绝不能在JSON文本的开头添加字节顺序标记。 (RFC7159)
I-JSON消息中的对象不得包含具有重复名称的成员。 (RFC7493)
每一行都是有效的JSON \n
行分隔符(ndJSON)
他们背后的理由:
RFC4627
ECMA标准是最小的,只描述了允许的语法语法,而RFC也提供了一些语义和安全性考虑。
RFC7159
IETF对JSON规范,特别是RFC4627抱怨不已。首先,它是“信息”而不是“标准轨道”,这意味着在某些情况下存在官僚主义问题。其次,它与ECMA版本不一致,因为4627要求JSON文本要么是对象要么是列表,而ECMA版本只有“42”或者是真的。最后,4627允许一些东西,比如对象中的重复键和破坏的Unicode字符串,每个人都同意这是不好的做法。
因此,IETF在2013年成立了一个JSON工作组,目的是修改4627以解决这些问题。
RFC7493
I-JSON只是一个说明,如果你构造一大块JSON并避免RFC 7159中描述的互操作失败,你可以称之为“I-JSON消息”。如果任何已知的JSON实现创建了I-JSON消息并将其发送到任何其他已知的JSON实现,那么软件意外的可能性就会非常小。
JSON开始在安全相关协议中大量使用:加密,身份验证/授权等。事实证明,安全人员担心糟糕的人和政府雇员使用愚蠢的JSON技巧,如重复密钥和严重错误的Unicode来攻击这些协议。
因此,如果您指定您的有效负载必须是I-JSON消息,并且接收方检查该消息,则您不再需要担心一类特定的攻击。</ p>
ndJSON
ndJSON的一个常见用例是通过TCP或UNIX管道等流协议提供多个JSON文本实例。它还可以用于存储半结构化数据。
eJSON
eJSON是JSON的扩展,支持更多类型。它支持所有JSON安全类型,以及:
日期(JavaScript日期) 二进制(JavaScript Uint8Array或EJSON.newBinary的结果) 用户定义的类型
所有eJSON序列化也是有效的JSON。例如,具有日期和二进制缓冲区的对象将在EJSON中序列化为:
{
"d": { "$date": 1358205756553 },
"b": { "$binary": "c3VyZS4=" }
}
<强>参考强>
答案 1 :(得分:0)
JSON是JSON。
Douglas Crockford最好说:http://www.json.org/fatfree.html
JSON(或JavaScript Object Notation)是一种编程语言模型 数据交换格式。它是最小的,文本的和子集 JavaScript的。具体来说,它是ECMA-262的一个子集(ECMAScript 编程语言标准,第三版,1999年12月)。它是 轻巧且易于解析。
JSON不是文档格式。它不是标记语言。它不是 甚至是一般的序列化格式,因为它没有直接的 循环结构的表示,虽然它可以支持元 做的表示。 ...
在我没有其他努力的情况下,JSON已被广泛采用 发现它使分布式生产变得容易得多的人 应用程序和服务。原始页面已被翻译成 中文,法文,德文,意大利文,日文,韩文和西班牙文。 JSON 已在RFC 4627中正式化.MIME媒体类型是 应用/ JSON。
JSON中表示的类型是字符串,数字,布尔值,对象, 数组,并且为null。
它实际上不再是Javascript编程语言中的一些特定结构。这些结构(如上所述)仅以下内容:
上面引用的两个例子都只是“JSON”。
您可以在此处找到更多信息:
答案 2 :(得分:0)
还应注意另一件事:JSON的所有这些定义都允许使用名称/值对形式的名称(在Javascript中不是有效的属性名称),例如字段名称不能以Javascript对象中的数字或符号开头,并且不能包含空格,但是JSON名称/值对中的名称可以包含任何字符(可能会转义)。因此,JSON的名称有点令人误解-它更像是一个关联数组,而不是Javascript对象的表示形式。