json初接触
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body> </body>
<script>
//json的语法可以表示简单值(除undefined)、数组(有序的值的列表,可通过索引访问其中的项的值)、对象(无序键值对)类型的值
// 注意对象的键也必须带双引号
var jsonObj1 = {
"name":"harold",
"age":"20",
"plan":{
"time":"thisSummerVacation",
"toDo":"Front-End intern"
} };
var jsonStr1 = '{"name":"harold","age":"20","plan":{"time":"thisSummerVacation","toDo":"Front-End intern"}}';
var jsObj1 = {
name:"linbudu",
age:20,
dream:"Rich",
// toJSON:function(){
// return this.dream;
// }
};
//解析与序列化,不同于XML-DOM文档-提取数据,而是JSON-JS对象
// document.writeln(jsonObj1);要在解析为对象后才能这样做
var analysis1 = JSON.stringify(jsObj1);
// var analysis2 = JSON.parse(jsonObj1);//报错,返回的数据已经是object类型,不需要再进行JSON.parse()转换了,可以直接当作对象使用。
var analysis2 = JSON.parse(jsonStr1);//[object Object]//将json字符串转为相应的js值
//json对象也是对象,这个方法用于转换json字符串,关于字符串和对象的区别,会写在下面
document.writeln(analysis1 + "</br>");//将一个js对象序列化为一个json字符串,默认不包含空格与缩进
document.writeln(analysis2 + "</br>");
for(var i in analysis2){
document.writeln(analysis2[i] + "</br>");
}
//序列化选项 stringify()方法可接受的另外两个参数
//1.过滤器:为数组时
document.writeln(JSON.stringify(jsObj1,["name","age"]) + "</br>" );//只会输出包含的属性
//2.过滤器为函数 第二个参数控制字符串缩进
var analysis3 = JSON.stringify(jsObj1,function(key,value){
switch(key){
case "age":
return value + 4;
case "dream":
return value + " and What?";
default :
return value;
}
} , "---");
document.write(analysis3 + "</br>");
//实际上第一次调用这个函数过滤器时传入的键为空字符串,值为该对象 //toJSON方法 为对象定义此方法 返回其自身的json数据格式 //理解:序列化一个对象的顺序:
//1,存在toJSON方法且能够取得有效的值,就调用此方法,否则返回对象本身
//2.若是提供了第二个参数,就应用过滤器,传入的值是第一步中返回的
//3.对第二步中的值进行序列化
//4.对第三个参数进行相应操作 //parse()方法也可接受一个参数 不同于前面那个是过滤函数,这个则是还原函数
var jsonObj2 = {
"title":"1",
"header":"2",
"container":"3",
"foot":"4",
releaseDate:new Date(2019,4,10)
};
var jsonText = JSON.stringify(jsonObj2);//(js、json)对象--json字符串 var revive = JSON.parse(jsonText,function(key,value){//从一个字符串中解析出json对象
if(key == "releaseDate"){
return new Date(value);
}else{
return value;
}
});
var test = JSON.stringify(revive);//直接返回revive会是[object,Object],因为返回的是一个json对象
document.writeln(test + "</br>");
</script>
</html>
写的过程中遇到了一些疑惑的地方,写在下面:
json对象:
var jsonObj1 = {
"name":"harold",
"age":"20",
"plan":{
"time":"thisSummerVacation",
"toDo":"Front-End intern"
} };
json字符串:
var jsonStr1 = '{"name":"harold","age":"20","plan":{"time":"thisSummerVacation","toDo":"Front-End intern"}}';
js对象:
var jsObj1 = {
name:"linbudu",
age:20,
dream:"Rich"
};
如果在JSON.parse()方法中传入一个json对象或是js对象,会出现
的报错,因为这个方法仅用于从字符串中解析出json对象 两个序列化方法:
json初接触的更多相关文章
- ExtJS初接触 —— 了解 Ext Core
ExtJS初接触 —— 了解 Ext Core Ext Core是一款和jQuery媲美的轻型JS库,基于MIT许可.对于Dom的操作,我个人还是比较喜欢用jQuery.当然如果项目中用的是ExtJS ...
- 初接触BurpLoader工具
初接触burp工具 菜鸟一枚,现在在接触一段时间测试,我在测试功能性的时候,想着网站被黑案例那么多,我是不是也应该弄弄安全性测试了,所以就有了下边的第一次接触BurpLoader工具来测试手机的app ...
- 软工实践练习-Git初接触
第一次听到Git,有点不知所云,听了实践课老师的讲解,才明白了Git作为最先进的分布式版本控制系统的重要性. 至于Git的安装和使用仍旧是自己摸索着去完成了,当然在这过程中也是遇到了很多的问题. 接下 ...
- vi初接触
vi初接触 它有三种模式: 一 一般模式 二 编辑模式 三 命令行模式 介绍几种比较常用的吧 -- 退出:q 写入:w 强制:! (以上可叠加) 显示行号:set nu 取消:set nonu 跳转到 ...
- ExtJS初接触 - 在项目中使用ExtJS
ExtJS初接触 - 在项目中使用ExtJS 今天ExtJS官网发布了ExtJS最新正式版4.2.1.Ext JS 4.2.1 正式版 下载 ExtJS为开发者在开发富客户的B/S应用中提供丰富的UI ...
- Java之路——Java初接触
本文大纲 1.Java是什么 2.Java历史 3.Java技术范围 3.1 Java SE平台技术范围 3.2 Java EE技术范围 3.3 Java 体系技术范围 4.总结 1.Java是什么 ...
- python 之 数据类型初接触
python 之 数据类型初接触 标准数据类型 Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) Dicti ...
- Dapr微服务应用开发系列2:Hello World与SDK初接触
题记:上篇介绍了Dapr的环境配置,这次我们来动手尝试一下Dapr应用的开发 Hello World Dapr应用的Hello World其实和其他的Hello World一样简单: 首先用你喜欢的语 ...
- C# MVC jsonp初接触成功
利用jsonp进行跨域请求资源 C# MVC ApiControllers准备如下: 1.需要在引用处右键管理NuGet安装jsonp插件 2.在Application_Start()中配置 Glob ...
随机推荐
- JavaScript 之 DOM
1. DOM DOM:Document Object Model 文档对象模型,定义访问和操作结构化文档(HTML)的方式. 在 HTML DOM (Document Object Model) 中 ...
- Bitmap每个像素值由指定的掩码决定
bBitmap每个像素值由指定的掩码决定 写了一个小工具来转换Bitmap彩色图片的不同位数. 程序的逻辑是拼接: Bitmap文件头 + Bitmap信息头 + Bitmap数据 在RGB888转换 ...
- poi读取word的内容
pache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 1.读取word 2003及word 2007需要的 ...
- FCC JS基础算法题(1):Factorialize a Number(计算一个整数的阶乘)
题目描述: 如果用字母n来代表一个整数,阶乘代表着所有小于或等于n的整数的乘积.阶乘通常简写成 n!例如: 5! = 1 * 2 * 3 * 4 * 5 = 120. 算法: function fac ...
- useradd语法2
在Linux中 useradd 命令用来创建或更新用户信息. useradd 命令属于比较难用的命令 (low level utility for adding users),所以 Debian 系的 ...
- 改善Python程序的条条建议
1:引论 建议1.理解Pythonic概念—-详见Python中的<Python之禅> 建议2.编写Pythonic代码 避免不规范代码,比如只用大小写区分变量.使用容易混淆的变量名. ...
- Linux ssh命令详解
SSH(远程连接工具)连接原理:ssh服务是一个守护进程(demon),系统后台监听客户端的连接,ssh服务端的进程名为sshd,负责实时监听客户端的请求(IP 22端口),包括公共秘钥等交换等信息. ...
- L2-018. 多项式A除以B*
L2-018. 多项式A除以B 参考博客 #include <iostream> #include <map> #include <cmath> #include ...
- 04_安装Nginx图片服务器
一.安装Nginx 先安装Nginx,看我之前发的文章: 搭建Nginx服务器 二.安装vsftpd 再安装vsftpd组件,看我之前发的文章: Linux安装ftp组件 三.开始搭建Nginx图片服 ...
- 服务器-华为RH5885 V3-安装Windows Server 2008R2后设备管理器中存在大量的感叹号,并且无法识别网络适配器,没有网卡
问题描述:用引导盘安装Windows Server 2008R2后,出现如题的情况. 根源:驱动未安装. 解决方法: 1.下载驱动:https://support.huawei.com/enterpr ...