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标识符 必须以字母,下划线(_)或美元符($)开始. 后续的字符可以是字母.数字.下划线或者美元符 (数字是不允许作为首字 ...
随机推荐
- Java 单字节、多字节读取文本文档中的内容
文本文档位于工程下. 鼠标右击工程,选择“new - File”,即可创建. 文本文档的格式:GBK 单字节读取 import java.io.File; import java.io.FileInp ...
- json数组
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>js ...
- C++ Primer 笔记——重载运算
1.对于二元运算符来说,左侧运算对象传递给第一个参数,而右侧运算对象传递给第二个参数.除了重载的函数调用运算符operator()之外,其他重载元素运算符不能含有默认实参. class test { ...
- python 内建函数
# # __geratteibute__class Itcast(object): def __init__(self,subject1): self.subject1 = subject1 self ...
- C# float与UInt16互转
//float拆分成两个UInt16 public static UInt16 FloatToTwoUInt16(float f) { byte[] bs = BitConvert.GetBytes( ...
- pp 总结二
1. return false ES6函数的扩展:箭头函数 数组 arr.map() arr.filter() <!DOCTYPE html> <html lang=&qu ...
- nginx的with-http_sub_module模块使用之替换字符串
一.介绍 该ngx_http_sub_module模块是一个过滤器,通过将一个指定的字符串替换为另一个字符串来修改响应.该模块不是默认生成的,它应该使用--with-http_sub_module 配 ...
- Codeforces 1139E Maximize Mex 二分图匹配
Maximize Mex 离线之后把删数变成加数, 然后一边跑匈牙利一遍算答案. #include<bits/stdc++.h> #define LL long long #define ...
- 微信获取地理位置转城市demo
<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js ...
- UOJ#62. 【UR #5】怎样跑得更快 数论 莫比乌斯反演
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ62.html 题解 太久没更博客了,该拯救我的博客了. $$\sum_{1\leq j \leq n} \ ...