JSON结构化数据

JSON(JavaScript Object Notation)是一种基于文本的格式,用于存储和传输结构化数据。
尽管它起源于 JavaScript 语言,但它被认为是与语言无关的:几乎适用于任何编程语言。JSON 的语法轻量,允许你轻松地存储和传输从数字、字符串到数组、对象等各种数据结构。你还可以通过将数组相互嵌套来创建更复杂的数据结构。


基本语法和结构

JSON 文本可以基于以下两种结构之一构建:

  • 一组键值对(类似关联数组 / 字典);

  • 一个有序的值集合(数组或列表)。

JSON 对象使用花括号 {} 表示,键值对之间使用逗号 , 分隔,而每一对键和值之间使用冒号 : 分隔。例如:

{
    "first_name": "Sophie",
    "last_name": "Goodwin",
    "age": 34
}
代码解释:

在这个例子中,我们看到了一个用户的数据,采用 JSON 格式表示。

  • 键(如 "first_name")必须是字符串;

  • 值可以是以下七种类型之一,包括另一个对象或数组。

注意: 最后一组键值对后面不要加逗号,),否则可能导致解析错误。


数组示例

数组中的值也可以是任意类型,包括另一个数组或对象。例如:

["night", "street", false, [345, 23, 8, "juice"], "fruit"]
代码解释:

这个 JSON 数组包含字符串、布尔值、嵌套数组和其他值。在实际应用中,数组通常包含类型相似的元素。

注意: JSON 不支持注释。


嵌套对象

JSON 是一种非常灵活的格式。你可以将对象作为属性嵌套在其他对象中,例如:

{
  "persons": [
    {
      "firstName": "Whitney",
      "lastName": "Byrd",
      "age": 20
    },
    {
      "firstName": "Eugene",
      "lastName": "Lang",
      "age": 26
    },
    {
      "firstName": "Sophie",
      "lastName": "Goodwin",
      "age": 34
    }
  ]
}
代码解释:

这个数据结构包含一个 persons 数组,数组中的每一项是一个包含个人信息的对象。这种结构类似一棵树(树形结构)。

嵌套的对象是相互独立的,可以有不同的属性:

{
  "persons": [
    {
      "firstName": "Whitney",
      "age": 20
    },
    {
      "firstName": "Eugene",
      "lastName": "Lang"
    }
  ]
}
代码解释:

虽然这些对象都在 persons 数组中,但它们的属性可以不完全相同。但在实际开发中,对象结构通常是统一的


camelCase vs snake_case

如果你认真阅读了前面的 JSON 示例,你可能会产生一个疑问:JSON 中复合单词(多个单词组合的键)应该使用哪种命名风格?

  • camelCase(驼峰式): 单词之间没有分隔符,每个单词(除了第一个)首字母大写,例如:firstName

    这种命名风格得名于中间的大写字母像骆驼的驼峰。

  • snake_case(蛇形命名法): 单词之间用下划线 _ 分隔,例如:first_name

选择哪种命名风格通常取决于你使用的编程语言和框架。两种风格都被 JSON 接受,但请不要在一个 JSON 文件中混用这两种风格


JSON 的优点

JSON 在互联网上广泛应用于数据交换,主要得益于以下优势:

  • 结构紧凑;

  • 灵活性强;

  • 可读性高,即使对非程序员也友好;

  • 几乎所有编程语言都内置处理 JSON 的函数和库。

JSON 是网络上传输结构化数据的常用格式。当你将数据序列化为 JSON 时,可以轻松地反序列化回来,不会丢失任何信息。JSON 相比纯文本的最大优势是:它允许通过嵌套和键值对来描述对象之间的关系。

你访问的大多数网站,很可能都在后台使用了 JSON。

此外,JSON 还常被用作数据存储格式,以及各种程序的配置文件格式。


总结

现在,你已经了解了 JSON 的基本结构与优势。JSON 简单易学,是一个在应用之间传输数据的强大工具。在实际工作中,你通常不需要手动编写 JSON 文件,而是从其他数据源中获取。但如果你想保存数据文件,只需将文件保存为以 .json 结尾的文件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值