一、什么是JSON

  • 1、JSON指的是JavaScript对象表示法(JavaScript Object Notation)。
  • 2、JSON是轻量级的文本数据交换格式,比XML更小、更快、更易解析。
  • 3、JSON独立于语言。
  • 4、JSON具有自我描述性、更易理解。

注意:JSON使用JavaScript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言。目前非常多的动态编程语言(PHP、.NET)都支持JSON。

二、JSON和XML比较

1、与XML相同之处

  • 1)JSON是纯文本。
  • 2)JSON具有“自我描述性”(人类可读)。
  • 3)JSON具有层级结构(值中存在值)。
  • 4)JSON可通过JavaScript进行解析。
  • 5)JSON数据可使用AJAX进行传输。

2、与XML不同之处

  • 1)没有结束标签。
  • 2)比XML更短。
  • 3)比XML读写的速度更快。
  • 4)能够使用内建的JavaScript eval()方法进行解析。
  • 5)可以使用数组。
  • 6)不使用保留字。

3、为什么使用JSON

对于AJAX应用程序来说,JSON比XML更快更易使用:

使用XML:

  • 读取XML文档。
  • 使用XML DOM来循环遍历文档。
  • 读取值并存储在变量中。

使用JSON

  • 读取JSON字符串。
  • 用eval()处理JSON字符串。

三、JSON语法

JSON语法是JavaScript语法的子集。

1、语法规则

JSON语法是JavaScript对象表示语法的子集。

  • 1)数据在名称/值对中。
  • 2)数据由逗号分隔。
  • 3)大括号保存对象。
  • 4)中括号保存数组。

2、JSON名称/值对

JSON数据的书写格式是:名称/值对。

名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值:

"name":"Tom"

3、JSON值

JSON值可以是:

  • 1)数字(整数或浮点数)。
  • 2)字符串(在双引号中)。
  • 3)逻辑值(true或false)。
  • 4)数组(在中括号中)。
  • 5)对象(在大括号中)。
  • 6)null。

4、JSON数字

JSON数字可以是整型或者浮点型:

{"age":30}

5、JSON对象

JSON对象在大括号({})中书写:

对象可以包含多个名称/值对:

{"name":"张三","age":24}

6、JSON数组

JSON数组在中括号中书写:

数组可以包含多个对象:

{
  "student":[
  {"name":"张三","age":24},
  {"name":"李四","age":25}
  ]
}

在上面的例子中,对象"student"是包含三个对象的数组。每个对象代表一条关于某个学生(name,age)的记录。

7、JSON布尔值

JSON布尔值可以是true或者false:

{"flag":true}

8、JSON null值

JSON可以设置null值:

{"student":null}

9、JSON使用JavaScript语法

因为JSON使用JavaScript语法,所以无需额外的软件就能处理JavaScript中的JSON。

通过JavaScript,你可以创建一个对象数组,并像这样进行赋值:

var student=[
  {"name":"张三","age":24},
  {"name":"李四","age":25}
  ];

可以像这样访问JavaScript对象数组中的第一项(索引从0开始)

student[0].name;

返回的内容是:张三

可以像这样修改数据:

student[0].name="tom";

10、JSON文件

  • 1)JSON文件的文件类型是".json"。
  • 2)JSON文本的MIME类型是"application/json"。

四、JSON对象

1、对象语法

{"name":"张三","age":25}

JSON对象使用在大括号({})中书写。

对象可以包含多个key/value(键/值)对。

key必须是字符串,value可以是合法的JSON数据类型(字符串、数字、对象、数组、布尔值或null)。

key和value中使用冒号(:)分割。

每个key/value对使用逗号(,)分割。

2、访问对象

你可以使用点(.)来访问对象的值。

var  myObj,x;
myObj={"name":"张三","age":24};
x=myObj.name;

上面的例子输出值:张三。

你也可以使用中括号([])来访问对象的值。

var  myObj,x;
myObj={"name":"张三","age":24};
x=myObj["name"];

上面的例子同样输出值:张三。

3、循环对象

你可以使用for-in来循环对象的属性,使用中括号([])来访问属性的值:

var myObj={"name":"张三","age":24};
for(x in myObj){
     document.getElementById("demo").innerHTML  = myObj[x] "<br>";
}

4、嵌套JSON对象

JSON对象中可以包含另外一个JSON对象:

student={
      "name":"张三",
      "age":24,
      "score":{
         "C#高级编程":94,
         "SQL Server":83,
         "Python":75
       }
}

你可以使用点号(.)或者中括号([])来访问嵌套的JSON对象。

例如:

var x=student.score.C#高级编程;
// 或者
var x=student.score["C#高级编程"];

5、修改JSON对象的值

你可以使用点号(.)来修改JSON对象的值:

student.score.C#高级编程=90;

你也可以使用中括号([])来修改JSON对象的值:

student.score["C#高级编程"]=90;

6、删除JSON对象的属性

我们可以使用delete关键字来删除JSON对象的属性:

delete student.score.C#高级编程;

也可以使用中括号([])来删除JSON对象的属性:

delete student.score["C#高级编程"];

五、JSON数组

1、数组作为JSON对象

["C#","Java","Python"]

JSON数组在中括号中书写。

JSON中数组值必须是合法的JSON数据类型(数字、字符串、对象、数组、布尔值或null)。

JavaScript中,数组值可以是以上的JSON数据类型,也可以是JavaScript的表达式,包括函数、日期、及undefined。

2、JSON对象中的数组

对象属性的值可以是一个数组:

var student={
   "name":"张三",
   "age":24,
   "subject":[".NET","java","python"]
}

可以使用索引值来访问数组:

var x=student.subject[0];

3、循环数组

可以使用for-in来访问数组:

for(i  in student.subject)  {
     x  = student.subject[i] "<br>";
}

也可以使用for循环

for(int i=0;i<student.subject.length;i  ) {
   x =student.subject[i] "<br>";
}

4、嵌套JSON对象中的数组

JSON对象中数组可以包含另外一个数组,或者另外一个JSON对象:

student={
   "name":"张三",
   "age":24,
   "score":[
         {".NET":91},
         {"java":85},
         {"python":79}
    ]
}

可以使用for-in来循环访问数组

for(i in student.score) {
   x  ="<h1>"  student.score[i] "</h1>";
}

5、修改数组值

可以使用索引值来修改数组值:

student.score[1]=93;

6、删除数组元素

可以使用delete关键字来删除数组元素:

delete  student.score[0];

到此这篇关于JSON基础介绍与详细用法的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持Devmax。

JSON基础介绍与详细用法的更多相关文章

  1. iOS – 开始iOS教程 – 变量之前的下划线?

    这是正确的还是我做错了什么?

  2. Swift开发快速上手系列教程目录-陆续完善,由浅入深

    Swift开发教程一.Swift基础Swift教程01-使用switfc终端命令编译运行swift程序Swift教程02-抓住下一个浪潮之巅Swift教程03-playground剖析swift语言Swift教程04-定义声明变量重要原则Swift教程05-基本数据类型(一)整型浮点型Swift教程06-基本数据类型(二)Bool布尔类型对比Java-boolean,Objc-BOOLSwift教

  3. Swift2.0不深入只浅出入门教程-01-The Basic

    本套视频教程是Swift2.0的入门教程,如果你看过其他的教程,可以不看这套教程,录制这套教程的目的,一个是为了自学,一个是为之后自己的另一套教程打基础。本期教程主要介绍Swift语言的一些基础知识。由于CSDN学院的课程审核还没有通过,所以暂时就放到了百度网盘。

  4. Swift教程-视频拍摄教程

    在此教程中,我们将拍摄一段保存到手机相册的视频。教程运行在iOS8.4和Xcode6.4下。打开Xcode并创建一个newSingleViewApplication,项目名称为IOS8SwiftTakeVideoPlayerTutorial,接着填上你的OrganizationName和OrganizationIdentifier,选择Swift语言,在设备一栏只选择iPhone。ImagePickerController的数据可以是Camera或Movie两种类型。视频的maximum长度设置为10秒。

  5. 详解 SiriKit - SiriKit 教程Part 2

    此文章是SiriKit教程系列的第二篇,建议先去阅读第一篇。处理SiriKit请求为了让集成的Siri更有用,可以使用INSendMessageIntentHandling协议的回调方法增加信息内容。协议有以下可选方法:只要实现这些方法,就可以给SiriKit提供更多信息,例如接收者、内容、小组名字、服务名字或者发送者。后面会详细说明区别,现在先介绍如何使用Siri提供的数据。Siri传入的intent对象包含文字版的消息内容。现在当我们尝试发送消息时,SiriKit就明白必须要提供内容值。

  6. swift 学习资源 - Swift 语言指南

    对于精选项目及文章,可直接访问《Swift项目精选》和《Swift文章精选》。对于Swift开源及跨平台开发的同学,可以关注swift.org教程文章开源项目推荐网站苹果官方Swift:Swift概述、博客以及开发资源。swift.org:开源后独立出来的Swift开源社区。ksm/SwiftInFlux:作者将AppleDeveloperForums上有关Swift特性、缺陷及变更讨论分类汇总并更新到GitHub,具有很好的可读性。从中可以一窥Swift缺陷及未来潜在地变化。近期第一时间出了三本Swif

  7. [译] NSCollectionView 入门教程

    Mac中自带的Finder和Photos就是使用了它:通过一个CollectionView来展示所有的文件和图片。NSCollectionView最早在OSX10.5被推出,它可以非常方便地布局一组具有相同大小的item,并把它们展示在一个可以滑动的ScrollView中。在OSX10.11ElCapitan中,参照iOS上的UICollectionView,NSCollectionView被全面进行了升级。在这个NSCollectionView的入门教程中,你将会创造一个叫SlideMagic的app,

  8. unity3d – Android游戏开发使用统一3D教程

    我是团结3D的新手.我打算用Unity3D开发一个安卓游戏,我已经在网上搜索了Unity3D中的android相关教程,但是找不到一个好的开发人员教我一个应用程序启动,所以大家请建议我一个网站我可以启动.我需要android教程,而不是独立的平台教程.提前致谢.解决方法你可以使用Google或Unity3Dofficialdocumentation.

  9. Arduino和Android的“Hello World”教程

    我当然知道Arduino网站和Android开发者文档,但它们过于复杂……解决方法你问两个问题:我如何编程Arduino?

  10. android – 自定义导航抽屉的涟漪效果

    我正在开发我的第一个应用程序,为它提供新的材料外观.我有点迷失了所以我正在按照一些教程来实现工具栏,导航抽屉等等.我不得不说我正在做它提供兼容前棒棒糖的Android版本,所以我正在使用支持图书馆.我的问题是,我刚刚在本教程之一中实现了导航抽屉,并使用以下库来实现兼容性:我认为代码实现太长了,不能把它放在这里,所以我将提供本教程的链接,我完全按照here说的那样完成.我的问题是,当我从导航抽屉的行

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部