JavaScript(8)——JSON

JSON

啊呀呀,终于写到了JSON了。莫名的开心,虽然还是被说进度慢,不过,我不管,我就是开心。恩,好好学习,好好加油。(这是一段毫无逻辑的话,我也不知道说啥了)

JSON是JavaScript的一个严格的子集,利用JavaScript中的一些模式来表示结构化数据。它是一种数据格式,而不是一种编程语言。

【语法】

JSON的语法支持简单值、对象和数组三种类型的值。不支持变量、函数或对象实例。与JavaScript中表示数据的某些语法相同,但是并不局限于JavaScript范畴。

简单值

使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。但JSON不支持JavaScript中的特殊值undefined。

JavaScript字符串与JSON字符串的最大区别在于,JSON字符串必须使用双引号。

对象

对象作为一种复杂数据类型,表示一种无序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂值。

与JavaScript的对象字面量相比,JSON对象一没有声明变量(JSON中设有变量的概念),二是没有末尾的分号。属性的值可以是简单值有,也可以是复杂类型值。

数组

也是一种复杂数据类型,表示一组有序值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组。

JSON数组采用的就是JavaScript中的数组字面量形式。JSON数组也没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合。

对象和数组通常是JSON数据结构的最外层形式,利用他们能够创造出各种各样的数据结构。

【解析与序列化】

JSON拥有与JavaScript类似的语法,也可以把JSON数据结构解析为有用的JavaScript对象。

JSON对象有stringify()和parse()两种方法。在最简单的情况下,这两种方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。如下

var book={
                title:"professional JavaScript",
                authors:[
                    "Nicholas C. Zakas"
                    ],
                    edition:3,
                    year:2011
                   };
var jaonText=JSON.stringify(book);

这个例子使用JSON.stringify()把一个JavaScript对象序列化为一个JSON字符串,然后将它保存在变量jsonText中。

【序列化选项】

JSON.stringify()可以接收两个参数,一个参数是个 过滤器,可以是一个数组,也可以是一个函数。第二个参数是一个选项,表示是否在JSON字符串中保留缩进。这两个参数用于指定以不同方式序列化JavaScript对象。

过滤结果

如果过滤参数是数组,那么JSON.stringify()的结果中将只包含数组中列出的属性。

为了改变序列化对象的结果,函数返回的值就是相应键的值。如果函数返回了undefined,那么相应的属性会被忽略。

要序列化的对象中的每一个对象都要经过过滤器。

字符串缩进

JSON.stringify()的方法的第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示的是每个级别缩进的空格数。如果缩进参数是一个字符串而非数值,则这个字符串将在JSON字符串中被用作缩进字符(不再使用空格)。缩进字符串最长不能超过10个字符长。

toJSON()方法

假设把一个对象传入JSON.stringify(),序列化该对象的顺序如下

(1)如果存在toJSON()方法而且能通过他取得有效的值,则调用该方法,否则,返回对象本身。

(2)如果提供了第二个参数,应用这个函数过滤器。传入函数的过滤器的值是第(1)步返回的值。

(3)对第(2)步返回的值进行相应的序列化。

(4)如果提供了第三个参数,执行相应的格式。

【解析选项】

JSON.parse()方法也可以接收另一个参数,该参数是一个函数(还原函数),将在每个键值对儿上调用。如果还原函数返回undefined,则表示要从结果中删除相应的键。如果返回其他值,则将该值插入到结果中。

时间: 2024-07-28 15:30:09

JavaScript(8)——JSON的相关文章

Javascript(7)——JSON

简易json数据三级联动下拉框 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv=&qu

面向对象的JavaScript(2):类

在小项目中对于JavaScript使用,只要写几个function就行了.但在大型项目中,尤其是在开发追求良好的用户体验的网站中,如SNS,就会 用到大量的JavaScrpt,有时JavaScript的工作量胜过了C#,这时写一堆function,就会显得很乱,杂乱无章,甚至会出现命名冲突,管理和维 护起来都很麻烦.对于这种情况我们就需要使用面向对象的思想来开发JavaScript.那我们就这样作罢: 在上一节面 向对象的JavaScript(1):命名空间  中说了怎么定义JavaScript

JavaScript(class0526)

什么是JavaScript? HTML只是描述网页长相的标记语言,没有计算.判断能力,如果所有计算.判断(比如判断文本框是否为空.判断两次密码是否输入一致)都放到服务器端执行的话网页的话页面会非常慢.用起来也很难用,对服务器的压力也很大,因此要求能在浏览器中执行一些简单的运算.判断.JavaScript就是一种在浏览器端执行的语言. B/S JavaScript的Java没直接的关系,唯一的关系就是JavaScript来源于Netscape中的LiveScript,后来吸收了Java的一些特性,

Ext JS学习第五天 我们所熟悉的javascript(四)

此文用来记录学习笔记: •javascript之对象.面向对象 •可能对于高级语言你可能了解甚至精通OOP面向对象,那么对于javascript你又熟悉多少呢?我们一起来学习javascript面向对象,这样非常有帮助我们理解Ext的基础架构,Ext本身就是一个JS面向对象的框架. •使用json对象(JavaScript Object Notation) –JS对象的特性 –对于js来说json对象非常的重要,我们要学会如何操作json对象 •面向对象的概念 –如何定义一个类.如何实例化对象.

JavaScript(15)jQuery 选择器

jQuery 选择器 选择器允许对元素组或单个元素进行操作. jQuery 元素选择器和属性选择器允许通过标签名.属性名或内容对 HTML 元素进行选择. 在 HTML DOM 术语中:选择器允许对 DOM 元素组或单个 DOM 节点进行操作. jQuery 元素选择器 jQuery 使用 CSS 选择器来选取 HTML 元素. $("p") 选取 <p> 元素. $("p.intro") 选取所有 class="intro" 的 &

初探JavaScript(二)——JS如何动态操控HTML

除去五一三天,我已经和<JavaScript Dom编程艺术>磨合了六天,第一印象很好.慢慢的,我发现这是一块排骨,除了肉还有骨头.遇到不解的地方就会多看几遍,实在不懂的先跳过,毕竟,初次接触JS,没有必要花费过多时间去钻死胡同,先混个脸熟,以后再来拜访也未尝不可嘛.就这样,踉踉跄跄.囫囵吞枣似的已经过五关斩六将,到达第十一章. 书中有几个章节并没有从语法.技术等层面介绍JavaScript,而是站在一个全局的角度,立足编程原则和习惯道破了我们该如何看待和使用这门语言,主要有以下几点: Jav

Head first javascript(二)

three basic data types text number boolean 变量 var var_name; 用'='初始化变量 var var_name = ini_value; const (不是所有浏览器都支持const) const const_name = ini_value; nan: not a number 使用一些未初始化的变量进行计算的时候会产生nan,如: const unknown; total = (1 + 2) * unknown; 这里total在计算的时

Head first javascript(一)

网页需要更好的交互体验,仅仅有html和css当然不够,因此javascript粉末登场 <script>表示当前页面有javascript,一般放在<head>中 <html> <head> <title>...</title> <script type = "text/javascript"> function ... </script> </head> ... </h

你不知道的Javascript(上卷)读书笔记之一 ---- 作用域

你不知道的Javascript(上卷)这本书在我看来是一本还不错的书籍,这本书用比较简洁的语言来描述Js的那些"坑",在这里写一些博客记录一下笔记以便消化吸收. 1 编译原理 在此书中,开始便提出:Javascript是一门编译型语言,我一开始以为这是国内翻译的锅,翻译的不够准确,后来我还专门去github看了,作者确实是将Js描述为一门编译型语言(compiled language).然而我认为作者更想表达的是Js也拥有和Java一般的特定的编译过程.而不是传统得认为只是单纯的进行&