json介绍

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
JSON 是一种用于数据交换的文本格式,诞生于 2001 年由Douglas Crockford提出,目的是取代繁琐笨重的XML格式。这种格式不仅人很容易进行阅读和编写,同时机器也很容易解析和生成,是当前十分流行的数据格式,尤其是在前端领域。

  1. JSON,全称是 JavaScript Object Notation,即 JavaScript 对象标记法。这是一种 轻量级
    (Light-Weight)、 基于文本的 (Text-Based)、 可读的 (Human-Readable)格式。
  1. JSON 无论对于人,还是对于机器来说,都是十分便于阅读和书写的,而且相比 XML 文件更小;
  1. JSON 格式的创始人声称此格式永远不升级,这就表示这种格式具有长时间的稳定性;
  1. JSON格式有两个显著的优点:书写简单,一目了然;符合JavaScript原生语法,可以由解释引擎直接处理,不用另外添加解析代码。
  1. JSON已经成为各大网站交换数据的标准格式,并被写入ECMAScript 5,成为标准的一部分。

简单说,每个JSON对象,就是一个值。要么是简单类型的值,要么是复合类型的值,但是只能是一个值,不能是两个或更多的值。这就是说,每个JSON文档只能包含一个值。

JSON对值的类型和格式有严格的规定

  • 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象。
  • 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity,
    -Infinity和undefined)。
  • 字符串必须使用双引号表示,不能使用单引号。
  • 对象的键名必须放在双引号里面。
  • 数组或对象最后一个成员的后面,不能加逗号。

PS: 需要注意的是,空数组和空对象都是合格的JSON值,null本身也是一个合格的JSON值。

JSON 的语法规则

JSON 的语法规则十分简单,可称得上“优雅完美”,总结起来有:

  • 数组(Array)用方括号(“[]”)表示。

  • 对象(Object)用大括号(”{}”)表示。

  • 名称/值对(name/value)组合成数组和对象。

  • 名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。

  • 并列的数据之间用逗号(“,”)分隔

//json对象
{"name": "Geoff Lui","age": 26,"isChinese": true
}//“名称/值对”里,值可以是数组和对象,例如:
{"name": "Geoff Lui","age": 26,"isChinese": true,"friends":["Lucy", "Lily", "Gwen"],"Mother": {"name": "Mary Lui","age": 54}
}

ES5新增了JSON对象,用来处理JSON格式数据。它有两个方法:JSON.stringify()和JSON.parse()。

JSON建构于两种结构:

“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。

JSON具有以下这些形式:

对象是一个无序的“‘名称/值’对”集合。一个对象以 {左括号 开始, }右括号 结束。每个“名称”后跟一个 :冒号 ;“‘名称/值’ 对”之间使用 ,逗号 分隔。

数组是值(value)的有序集合。一个数组以 [左中括号 开始, ]右中括号 结束。值之间使用 ,逗号 分隔。

值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。这些结构可以嵌套。

字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。

字符串(string)与C或者Java的字符串非常相似。

数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。

空白可以加入到任何符号之间。 以下描述了完整的语言。

参考文献

A-Tione的博客
json官方文档
怎么理解json

Java学习之json篇——json介绍相关推荐

  1. Java学习-11 XML与JSON

    Java学习-11 XML与JSON 1.XML 1.1.简介 可扩展标记语言(eXtensible Markup Language). 特性:1. xml具有平台无关性, 是一门独立的标记语言.2. ...

  2. 从.Net到Java学习第四篇——spring boot+redis

    从.Net到Java学习系列目录 "学习java已经十天,有时也怀念当初.net的经典,让这语言将你我相连,怀念你......"接上一篇,本篇使用到的框架redis.FastJSO ...

  3. [Java学习之路篇] 设计原则与设计模式

    编程可谓博大精深,按照不同的思路逻辑.框架规范编写出来的程序运行的效率都大相径庭.本篇并不只针对Java程序,应适用于所有编写的程序,是编程世界中的一套方法论,俗称编程套路.它们会出现在目前很多大公司 ...

  4. Java学习进阶知识篇

    系列文章目录 提示:....................... 文章目录 系列文章目录 前言 一.类和对象 面向对象基本介绍 类的基本使用属性 构造方法和析构方法 对象 二. 总结 前言 提示:这 ...

  5. java学习,入门篇-HelloWorld

    HelloWorld 学习资源:西部开源–秦疆,B站up主'遇见狂神说'. 新建一个用于存放代码的文件 在新建的文件中新建一个Java 文件 新建一个文件 更改后缀名为Hello.java 编码格式 ...

  6. Java学习之正则表达式篇

    文章目录 快速入门 正则表达式基本语法 1. 字符匹配符 2. 选择匹配符 3. 限定符 4. 定位符 5. 分组组合 .反向引用符 6.特殊字符 三个常用类 Pattern Matcher Patt ...

  7. java学习笔记-基础篇

    Java基础篇 1-12 常识 13 this关键字 14参数传递 16 继承 17 访问权限 28-31异常 1-12 常识 1.文件夹以列表展示,显示扩展名,在地址栏显示全路径 2.javac编译 ...

  8. JAVA学习第五篇--java中对象的创建过程以及函数的调用过程

    下面本文将详细介绍java语言中对象的创建过程,以及函数的调用过程. class Person{public String name="zhao";public int ege;p ...

  9. java 学习第三篇if判断

    JAVA 判断 单词: if 如果 else 否则 单分支: If(条件) { 代码块 } If是一个判断语句.代码格式如上. If括号的内是表达式.如果表达式值是成立的便执行代码块.之后在执行IF语 ...

  10. Java学习第7篇_supper关键字

    文章目录 1 super关键字的使用 2 super调用构造器 3 子类对象实例化过程 1 super关键字的使用 1.super理解为:父类的 2.super可以用来调用:属性.方法.构造器 3.s ...

最新文章

  1. Android 自定义控件打造史上最简单的侧滑菜单
  2. asp服务器_200行代码,7个对象——让你了解ASP.NET Core框架的本质「3.x版」
  3. 这款Web SSH工具超牛逼!
  4. [算法]判断一个数是不是2的N次方
  5. 里面不仅有强悍的zhajinhuaplayer
  6. Ascll字符串转换到二进制字符串
  7. wordpress mysql缓存_WordPress 对象缓存与数据库缓存
  8. python十大必备知识_学Python必备的基础知识
  9. 苹果反垄断案败诉!应用商店30%抽成太高惹民怨,市值一夜跌了整个特斯拉
  10. 2017年上海市计算机一级题库,2017年计算机一级题库及答案
  11. 快速写出matlab的GUI程序
  12. java mysql 多表查询_MySQL必备知识多表查询
  13. 怎样复制百度文库中的内容?
  14. 微生物组-扩增子16S分析和可视化(2022.10)
  15. 微信小程序之weui的引用及使用说明
  16. unity2019安装完后打不开直接闪退_VS2017 VS2019 无法进入安装界面闪退问题(windows7SP1)...
  17. ue4 从小到大_UE4 Pak 相关知识总结
  18. layui表格下拉框无法显示
  19. arduino学习:本人编写的单个传感器控制电机运转的代码
  20. 数据库原理及应用(东南大学)笔记——第二章 数据模型

热门文章

  1. 海量数据的常用10大解决方案
  2. 如何使用WordPress美化网站
  3. Google Earth Engine(GEE)计算湿度(WET)
  4. VC知识库BLOG-技术,非技术......
  5. Oracle 11g数据库基础教程(第2版)-课后习题-第十二章
  6. 在HFSS中用vbs脚本跑马灯?
  7. python深度学习机器学习必备的学习网站集合!
  8. java开发sublime插件_开发者最常用的8款Sublime text 3插件
  9. 基于双生视界的live2d提取与查看方法
  10. 信息安全法律法规知识点汇总(郑大信安个人总结版)