JavaScript基础笔记(十一)JSON
JSON
关于JSON,最重要的一点是理解它是一种数据格式,不是编程语言。
一、语法
JSON 不支持变量、函数或对象实例,它就是一种表示结构化数据的格式,虽然与 JavaScript 中表示
数据的某些语法相同,但它并不局限于 JavaScript 的范畴。
JSON语法可以表示下列三种类型的值:
一)简单值
使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。但没有undefined。
注意在表示字符串时,只能使用双引号。
二)对象
对象作为一种复杂的数据类型,表示的是一组无序的键值对。每个键值对中的值可以是简单值,也可以是复杂数据类型的值。
//JavaScript对象
var person = {
name: "Tom",
age :19
};
//与JS对象相比,JSON对象不同的地方:
//1.不能声明变量;2.对象的属性必须加双引号;3.没有末尾分号
{
"name": "Jerry",
"age": "8",
"school": {
"name": "Nan Shan",
"location": "xx00"
}
}
三)数组
数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中
的值。数组的值也可以是任意类型——简单值、对象或数组。
//JSON中的数组
[22, "Hello", "king"]
[
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
},
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 2,
year: 2009
},
{
"title": "Professional Ajax",
"authors": [
"Nicholas C. Zakas",
"Jeremy McPeak",
"Joe Fawcett"
],
edition: 2,
year: 2008
}
]
二、解析与序列化
可以把JSON数据结构解析为JavaScript对象。
一)JSON对象
早期浏览器使用eval()函数把JSON解析为JavaScript对象和数组。但使用eval()函数对JSON数据进行转换存在一定风险,
因为可能会执行一些恶意代码。所以,建议使用全局对象JSON。
JSON对象的两个方法:
1)JSON.stringify():把JavaScript对象序列化为JSON字符串。
2)JSON.parse与上面相反。
var book = {
title: "JavaScript for xx",
authors: ['Price', 'Tom', "Alex"],
edition: 9,
year: 2200
};
var jsonText = JSON.stringify(book);
console.log(jsonText);
//{"title":"JavaScript for xx",
// "authors":["Price","Tom","Alex"],"edition":9,"year":2200}
var bookInfo = JSON.parse(jsonText);
console.log(bookInfo.authors);
在序列化 JavaScript 对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为
undefined 的任何属性也都会被跳过。
3)toJSON()
var book = {
title: "JavaScript for xx",
authors: ['Price', 'Tom', "Alex"],
edition: 9,
year: 2200,
toJSON: function () {
return this.title;
}
};
var jsonText = JSON.stringify(book);
console.log(jsonText); //"JavaScript for xx"
JavaScript基础笔记(十一)JSON的更多相关文章
- JavaScript基础笔记一
一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...
- JavaScript基础笔记二
一.函数返回值1.什么是函数返回值 函数的执行结果2. 可以没有return // 没有return或者return后面为空则会返回undefined3.一个函数应该只返回一种类型的值 二.可变 ...
- JavaScript基础笔记集合(转)
JavaScript基础笔记集合 JavaScript基础笔记集合 js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译 js存放的位置 html脚本必须放在&l ...
- JavaScript:基础扩展(1)——JSON
JavaScript:扩展知识(1)——JSON 理解: 关于 JSON,最重要的是要理解它是一种数据格式,不是一种编程语言.虽然具有相同的语法形式,但 JSON 并不从属于 JavaScript.而 ...
- JavaScript基础知识(JSON、Function对象、原型、引用类型)
19.JSON 概念:JavaScript 对象表示法(JavaScript Object Notation),是一种轻量级的数据交换格式 特点:易于程序员编写和查看:易于计算机解析和生成 数据结构 ...
- JavaScript基础笔记(十)表单脚本
表单脚本 一.表单基础知识 JavaScript中表单对应的是HTMLFormElement类型,该类型继承自HTMLElement类型. 通过document.forms可以获得所有表单元素,通过数 ...
- JavaScript基础笔记(八)DOM扩展
DOM扩展 一.选择符API Selectors API是由W3C发起制定的一个标准,致力于让浏览器原生支持CSS查询. 一)querySelector() 在Document和Element类型实例 ...
- JavaScript基础笔记(一)基本概念
基本概念 一.语法 一)区分大小写 二)标识符 书写规则同Java 三)注释 略 四)严格模式 1.在整个脚本中启用严格模式:在顶部添加 "use strict" 2.指定函数在严 ...
- JavaScript基础笔记1220
JavaScript笔记1.JavaScript关键词2.JavaScript标识符 必须以字母,下划线(_)或美元符($)开始. 后续的字符可以是字母.数字.下划线或者美元符 (数字是不允许作为首字 ...
随机推荐
- hdu4738 求割边
细节题:1.如果图不连通,则输出0 2.如果图没有桥,本身是双联通图,则输出-1 3.如果最小的桥权值为0,任然要输出1 #include<bits/stdc++.h> using nam ...
- Python使用re模块实现正则表达式操作
Python提供了re模块,用于实现正则表达式的操作.在实现时,可以使用re模块提供的方法(如search().match().findall()等)进行字符串处理,也可以先使用re模块的compil ...
- rsync注意事项
1.sudo rsync -zavP --exclude=/.git/ --exclude=.env --exclude=web/index.php --password-file=/usr/loc ...
- meaven
一个项目管理工具.java语言编写的,所以可以跨平台 https://mvnrepository.com/
- 008-Python-模块
1.模块 1.1什么是模块 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀: 模块分为: 内置模块(内部定义的如time,os,sys等) 第三方模块(需要安装 ...
- Junit4 IDEA测试学习一
1.Junit4 下载 https://github.com/junit-team/junit4/releases 4.12 还需要还导入hamcrest-core-1.3.jar 2.IDEA Te ...
- Centos7+ASP.Net Core 运行
一:ASP.Net Core跨平台运行,需要在Linux安装运行环境.本机器使用的Centos,下载安装地址为:https://www.microsoft.com/net/core#centos su ...
- java.net.ConnectException: Call From slaver1/192.168.19.128 to slaver1:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org
1:练习spark的时候,操作大概如我读取hdfs上面的文件,然后spark懒加载以后,我读取详细信息出现如下所示的错误,错误虽然不大,我感觉有必要记录一下,因为错误的起因是对命令的不熟悉造成的,错误 ...
- 【BZOJ3252】攻略
题解: 首先贪心的会发现我们每次一定会选当前权值和最大的那个 然后在于怎么维护这个最大值 我们发现每个修改实际上是对沿途所有点的子树的修改 所以用线段树维护就可以了.. 另外注意有重复部分,但一定是包 ...
- python全栈开发day81--jsonp
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...