JSON 基础

简 单地说,JSON 可以将 JavaScript 对象中表示的一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符串从 Web 客户机传递给服务器端程序。这个字符串看起来有点儿古怪(稍后会看到几个示例),但是 JavaScript 很容易解释它,而且 JSON 可以表示比名称/值对更复杂的结构。例如,可以表示数组和复杂的对象,而不仅仅是键和值的简单列表。

简单 JSON 示例

按照最简单的形式,可以用下面这样的 JSON 表示名称/值对:

{ "firstName": "Brett" }

这个示例非常基本,而且实际上比等效的纯文本名称/值对占用更多的空间:

firstName=Brett

但是,当将多个名称/值对串在一起时,JSON 就会体现出它的价值了。首先,可以创建包含多个名称/值对的记录,比如:

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" }

从语法方面来看,这与名称/值对相比并没有很大的优势,但是在这种情况下 JSON 更容易使用,而且可读性更好。例如,它明确地表示以上三个值都是同一记录的一部分;花括号使这些值有了某种联系。

值的数组

当 需要表示一组值时,JSON 不但能够提高可读性,而且可以减少复杂性。例如,假设您希望表示一个人名列表。在 XML 中,需要许多开始标记和结束标记;如果使用典型的名称/值对(就像在本系列前面文章中看到的那种名称/值对),那么必须建立一种专有的数据格式,或者将键 名称修改为 person1-firstName 这样的形式。

如果使用 JSON,就只需将多个带花括号的记录分组在一起:

{ "people": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },

{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }

]}

这不难理解。在这个示例中,只有一个名为 people 的变量,值是包含三个条目的数组,每个条目是一个人的记录,其中包含名、姓和电子邮件地址。上面的示例演示如何用括号将记录组合成一个值。当然,可以使用相同的语法表示多个值(每个值包含多个记录):

{ "programmers": [

{ "firstName": "Brett", "lastName":"McLaughlin", "email": "brett@newInstance.com" },

{ "firstName": "Jason", "lastName":"Hunter", "email": "jason@servlets.com" },

{ "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }

],

"authors": [

{ "firstName": "Isaac", "lastName": "Asimov", "genre": "science fiction" },

{ "firstName": "Tad", "lastName": "Williams", "genre": "fantasy" },

{ "firstName": "Frank", "lastName": "Peretti", "genre": "christian fiction" }

],

"musicians": [

{ "firstName": "Eric", "lastName": "Clapton", "instrument": "guitar" },

{ "firstName": "Sergei", "lastName": "Rachmaninoff", "instrument": "piano" }

]

}

这里最值得注意的是,能够表示多个值,每 个值进而包含多个值。但是还应该注意,在不同的主条目(programmers、authors 和 musicians)之间,记录中实际的名称/值对可以不一样。JSON 是完全动态的,允许在 JSON 结构的中间改变表示数据的方式。

在处理 JSON 格式的数据时,没有需要遵守的预定义的约束。所以,在同样的数据结构中,可以改变表示数据的方式,甚至可以以不同方式表示同一事物。

在 JavaScript 中使用 JSON

掌握了 JSON 格式之后,在 JavaScript 中使用它就很简单了。JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。

将 JSON 数据赋值给变量

例如,可以创建一个新的 JavaScript 变量,然后将 JSON 格式的数据字符串直接赋值给它:

php 使用json 教程,PHP使用JSON 教程相关推荐

  1. java后台解析json并保存到数据库_[Java教程]ajax 发送json 后台接收 遍历保存进数据库...

    [Java教程]ajax 发送json 后台接收 遍历保存进数据库 0 2017-09-25 15:00:23 前台怎么拿参数的我就不管了我也不会 反正用这个ajax没错 ajax 代码   一定要写 ...

  2. python菜鸟教程网-Python JSON

    Python JSON 本章节我们将为大家介绍如何使用 Python 语言来编码和解码 JSON 对象. JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式, ...

  3. json.parser性能_Jackson JSON Java Parser API示例教程

    json.parser性能 Jackson JSON Java Parser is very popular and used in Spring framework too. Java JSON P ...

  4. 全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析

    全网最简单的C# json数据解析 无敌菜鸟教程 十分钟搞定json数据解析 废话先说一点,算了.直接进入正题吧. 用例子说话: JSON数据: string json: " {" ...

  5. Vue移动端框架Mint UI教程-调用模拟json数据(五)

    1:安装 npm install vue-resource 2:打开main.js 注册 import VueResource from 'vue-resource' Vue.use(VueResou ...

  6. 廖雪峰js教程笔记9 json

    JSON是JavaScript Object Notation的缩写,它是一种数据交换格式. 在JSON出现之前,大家一直用XML来传递数据.因为XML是一种纯文本格式,所以它适合在网络上交换数据.X ...

  7. 下载 嵌入式qt实战教程pdf_Qt之JSON教程-实战篇

    以实战例子讲述JSON三兄弟的后续故事. 实战一:发送JSON网络请求 作为JSON老大哥的QJsonValue自知对面的大户人家妹子貌美如花,心里已经打起算盘,先下手为强,后下手遭殃.决定显示下自己 ...

  8. python读取json数据教程_Python教程之解析json数据

    这里先说一下什么是json,其实json是一种跨语言通用的数据格式,它的本质是一个字符串,然而几乎所有的计算机语言都可以将这种json格式的数据转为自己能使用的数据类型,例如在PHP中json字符串可 ...

  9. android json教程,Android之JSON解析

    编写项目,包含一个Activity.Activity页面效果如下图所示.点击按钮"解析文件1"后解析Json文件json_single并将结果显示在红色框体中,点击按钮" ...

  10. Android[中级教程]第八章 Json数据的处理

    经过上几章的学习,相信同学们对XML解析已经得心应手了,但今天我们要解析Json数据,因为Json数据占用数据量小,因此在Android中主要数据通信还是以Json为主,而且Json数据可以跟Andr ...

最新文章

  1. python3.6.4安装教程-centos7中安装python3.6.4的教程
  2. Jupyter notebook与Spyder,以及Jupyter notebook与Spyder集成插件
  3. Linux进程实践(4) --wait避免僵尸进程
  4. vs中imshow函数报错_opencv编程:8 imshow不显示图像和waitkey函数
  5. React  学习第一天-2018-07-21
  6. 遍历某个文件夹下的所有文件并格式化显示出来
  7. 【.NET Core项目实战-统一认证平台】第一章 功能及架构分析
  8. linux 进程内存开销,linux下查看最消耗CPU、内存的进程
  9. THREEJS - 动态标签(texture纹理方式)
  10. [迁移]cocos2d-x 2.1.4 CocosBuilder-3.0-alpha5 lua
  11. android模拟器pc版 安装软件,不用花钱,电脑端Android模拟器安装使用教程
  12. IDEA各种颜色代表什么
  13. 电脑键盘功能基础知识大全分享
  14. Justinmind使用教程(1)——概述部分
  15. Python自学笔记系列一——认识python
  16. 华为鸿蒙生态班怎么上,华为联合西北工业大学开设“鸿蒙生态菁英班”: 50 人左右...
  17. 二十八. 智能驾驶笔记之基于PointNet++的三维点云分类和语义分割
  18. Win10任务栏软件图标变成白色如何解决?
  19. 备案注销申请表_怎么注销单个网站备案?
  20. 向日葵族群的典型特征

热门文章

  1. java Instrument修改字节码实现aop功能
  2. UIPikerView的属性
  3. hdu 4005(边双连通)
  4. CLR via C# 内存管理读书记
  5. List中对象model的排序问题
  6. Java 多线程 4:wait() 和 notify()/notifyAll()
  7. Windows上基于快捷方式的Putty免密码登陆
  8. WinForm 对EXCEL 的操作(三)
  9. 【实习之T100开发】T100 单档程序开发(2)添加功能
  10. springboot文件上传下载实战 —— 登录功能、展示所有文件