JSON简介

JSON - JavaScript Object Notation的缩写 - 是一种用于共享数据的格式。顾名思义,JSON是从JavaScript编程语言派生的,但它可供许多语言使用。本信息指南将帮助您快速了解可以在JSON文件中使用的数据以及此格式的一般结构和语法。

JSON简介

介绍

JSON - JavaScript Object Notation 是共享数据的格式。顾名思义,JSON是从JavaScript编程语言派生的,但它可供许多语言使用,包括Python,Ruby,PHP和Java。 JSON通常发音为名称“Jason”。 JSON采用.json扩展时,它是独一无二的。 当在另一种文件格式(如在被定义.html ),它可以引号内显示为JSON字符串,或者它可以是分配给一个变量的对象。此格式很容易在Web服务器和客户端或浏览器之间传输。 非常可读和轻量级,JSON提供了一个很好的替代XML和需要少得多的格式。本信息指南将帮助您快速了解可以在JSON文件中使用的数据,以及此格式的一般结构和语法。

语法和结构

JSON对象是通常以大括号形式呈现的键值数据格式。当你使用JSON工作,你可能会看到JSON对象在.json文件,但他们也可以存在,作为一个节目的上下文中的JSON对象或字符串。 JSON对象看起来像这样:
{ 
  "first_name" : "Sammy", 
  "last_name" : "Shark", 
  "location" : "Ocean" 
}
虽然这是一个很短的例子,JSON,可能还有很多线长,这表明格式一般都设置了看起来像这样的两个花括号(或者大括号) { }在它的两端,并与键盘值对填充空格之间。 JSON中使用的大多数数据最终都封装在JSON对象中。 键-值对它们之间有一个冒号作为"key" : "value" 。 每个键-值对用逗号分隔,所以JSON中间看起来是这样的: "key" : "value", "key" : "value", "key": "value" 。 在上面的例子中,第一个键值对是"first_name" : "Sammy" 。 JSON 是对冒号的左侧。 他们需要用双引号,如"key" ,可以是任何有效的字符串。 在每个对象内,键需要是唯一的。 这些关键字符串可以包括空格,如"first name" ,但可以使它更难获得,当你编程,所以最好在使用下划线,如"first_name" JSON 被发现冒号的右侧。在粒度级别,这些需要是6种简单数据类型之一:
  • 字符串
  • 数字
  • 对象
  • 数组
  • 布尔(真或假)
  • 空值
从更广的层面,价值观也可制成复杂的数据类型JSON对象或数组,这是包括在的了下一节 。 作为值传递到JSON中的每个数据类型都将保留自己的语法,因此字符串将在引号中,但数字不会。 虽然在.json文件,我们通常会看到的格式扩展多行,JSON,也可以在一行中写入的所有。
{ "first_name" : "Sammy", "last_name": "Shark", "location" : "Ocean" }
这在另一个文件类型或者当您遇到JSON字符串时更常见。 在多行上写JSON格式通常使它更加可读,特别是在处理大型数据集时。因为JSON忽略其元素之间的空格,您可以将您的冒号和键值对隔开,以使数据更加人性化:
{ 
  "first_name" : "Sammy", 
  "last_name" : "Shark", 
  "location" : "Ocean" 
}
重要的是要记住,虽然他们看起来相似,JSON对象是不相同的格式JavaScript对象 ,因此,尽管你可以JavaScript对象中使用的功能,您不能使用它们作为JSON值。 JSON的最重要的属性是它可以很容易地在所有参与语言可以使用的格式的编程语言之间传输。 JavaScript对象只能通过JavaScript编程语言直接使用。 到目前为止,我们已经以最简单的术语看待JSON格式,但是JSON可以变得分层和复杂,由嵌套对象和数组组成。我们将在下一部分讨论更复杂的JSON。

在JSON中使用复杂类型

除了嵌套数组之外,JSON还可以存储JSON格式的嵌套对象。这些对象和数组将作为分配给键的值传递,并且通常也将由键值对组成。

嵌套对象

users.json以下文件中,对于四个用户( "sammy""jesse""drew""jamie" )有作为每个用户的值传递嵌套JSON对象,具有自己的嵌套键"username""location" ,涉及到每个用户。第一个嵌套JSON对象在下面突出显示。
users.json
{ 
  "sammy" : {
    "username" : "SammyShark",
    "location" : "Indian Ocean"
  },
  "jesse" : {
    "username" : "JesseOctopus",
    "location" : "Pacific Ocean"
  },
  "drew" : {
    "username" : "DrewSquid",
    "location" : "Atlantic Ocean"
  },
  "jamie" : {
    "username" : "JamieMantisShrimp",
    "location" : "Pacific Ocean"
  }
}
在上面的示例中,花括号用于形成一个嵌套的JSON对象,其中包含四个用户每个的关联用户名和位置数据。就像任何其他值一样,当使用对象时,逗号用于分隔元素。

嵌套数组

通过使用作为值传递的JavaScript数组,还可以在JSON格式中嵌套数据。 JavaScript使用方括号[ ]在其阵列型的任一端。数组是有序集合,可以包含不同数据类型的值。 当我们处理很多可以容易地分组在一起的数据时,我们可以使用数组,例如当存在与单个用户相关联的各种网站和社交媒体简档时。 在突出显示第一个嵌套数组时,Sammy的用户配置文件可能如下所示:
user_profile.json
{ 
  "first_name" : "Sammy",
  "last_name" : "Shark",
  "location" : "Ocean",
  "websites" : [ 
    {
      "description" : "work",
      "URL" : "https://www.digitalocean.com/"
    },
    {
      "desciption" : "tutorials",
      "URL" : "https://www.digitalocean.com/community/tutorials"
    }
  ],
  "social_media" : [
    {
      "description" : "twitter",
      "link" : "https://twitter.com/digitalocean"
    },
    {
      "description" : "facebook",
      "link" : "https://www.facebook.com/DigitalOceanCloudHosting"
    },
    {
      "description" : "github",
      "link" : "https://github.com/digitalocean"
    }
  ]
}
"websites"键和"social_media"键每次使用数组属于Sammy 2网站链接和3社交媒体联系信息。我们知道那些是数组,因为使用方括号。 在我们的JSON格式中使用嵌套可以让我们使用更复杂和层次化的数据。

与XML的比较

XML或E X tensible 中号 arkup 大号 anguage,是存储可以由人类和机器读取访问的数据的一种方式。 XML格式可用于许多编程语言。 在许多方面,XML非常类似于JSON,但它需要更多的文本,因此长度更长,读取和写入更耗时。 XML必须使用XML解析器解析,但JSON可以使用标准函数解析。与JSON不同,XML不能使用数组。 我们将看一个XML格式的示例,然后查看在JSON中呈现的相同数据。
users.xml
<users>
    <user>
        <username>SammyShark</username> <location>Indian Ocean</location>
    </user>
    <user>
        <username>JesseOctopus</username> <location>Pacific Ocean</location>
    </user>
    <user>
        <username>DrewSquir</username> <location>Atlantic Ocean</location>
    </user>
    <user>
        <username>JamieMantisShrimp</username> <location>Pacific Ocean</location>
    </user>
</users>
users.json
{"users": [
  {"username" : "SammyShark", "location" : "Indian Ocean"},
  {"username" : "JesseOctopus", "location" : "Pacific Ocean"},
  {"username" : "DrewSquid", "location" : "Atlantic Ocean"},
  {"username" : "JamieMantisShrimp", "location" : "Pacific Ocean"}
] }
我们看到,JSON是更紧凑,不需要结束标签,而XML。此外,XML不使用数组,因为JSON的这个例子(你可以通过使用方括号)。 如果你熟悉HTML,你会发现XML在使用标签时看起来很相似。虽然JSON比XML更简洁,更简洁,并且在包括AJAX应用程序在内的许多情况下快速使用,但在决定要使用哪些数据结构之前,您需要了解您正在开发的项目类型。

资源

JSON是一种在JavaScript中使用的自然格式,并且有许多可用于许多流行编程语言的实现。你可以看到“全语言支持JSON简介 ”的网站,并在jQuery库还可以兼容和解析的照顾。 大多数时候,你不会编写纯JSON,而是将它从数据源或将其他数据文件转换为JSON。您可以转换CSV,或者您可以通过使用开源工具,发现电子表格程序成JSON制表符分隔数据的数据转换器 。 您可以XML转换成JSON并与创作共用许可反之亦然utilities-online.info网站 。使用自动化工具时,您应该验证结果并根据需要删除冗余。 在翻译其他数据类型为JSON,或者创建自己的,你可以验证你的JSON JSONLint ,并且可以在一个网络开发环境测试您的JSON 的jsfiddle

结论

JSON是一种轻量级格式,使您可以轻松地共享,存储和使用数据。作为一种格式,JSON已经经历API的更多的支持,包括Twitter的API 。 因为你可能不会创建自己.json文件,但是从其他渠道采购它们,想少谈JSON的结构和详细了解是很重要的如何在你的程序最好用JSON。