前言

JSON崛起不是意外,是顺应时代;相当简洁小巧的书写模式及阅读方式;

基础

看这篇文章: JSON知识点汇总_W3SCHOOL


初步进阶

早期的解析仅仅实用eval() ,可是这货太easy给注入恶意代码…之后就有人写了个JSON2.js来让低级浏览器支持JSON

ES5開始,就出现了对应的规范来和函数处理JSON对象[stringify()和parse()];

值得一提的是:

1. 每一个属性名都必须用双引號或单引號,否则会抛出异常!!!

2. JSON数组的格式为字面量格式

3. 每一个值键对后面若是还有值键对,应该以逗号隔开

  • stringify() : 把javascript对象序列化为字符串
var person = {
"name" :"CRPER",
"age" : 24,
"Interesting" :['reading','play']
} var person_str = JSON.stringify(person); //这一步就是把JSON对象转为对应的字符串 console.log(person_str); //打印值 : {"name":"CRPER","age":24,"Interesting":["reading","play"]}
console.log(typeof person_str); //打印值: "string" /*
过滤:第二个參数(riviver)支持传入一个数组或者一个函数来过滤整个json对象不须要的属性和值
默认须要返回自身value[就是条件不成立的时候]
*/
var person1 = JSON.stringify(person,["age","Interesting"]);
console.log(person1); //打印值:{"age":24,"Interesting":["reading","play"]} var person2 = JSON.stringify(person,function(key,value){
switch(key){
case "name" :return value + "LIN";
case "age":return parseInt(value) + 1;
default : return value;
}
}) console.log(person2); //打印值: "{"name":"CRPERLIN","age":25,"Interesting":["reading","play"]}" var person2 = JSON.stringify(person,function(key,value){
if(key == "name"){
return "LIN" + value;
}else if(key == "age"){
return 10+value;
}
else{
return value
}
}) console.log(person2); //打印值: "{"name":"LINCRPER","age":34,"Interesting":["reading","play"]}" /*缩进:第三个參数是控制缩进的,最大的缩进为10个字符*/
var person3 = JSON.stringify(person,null,4); console.log(person3);
/*
"{
"name": "CRPER",
"age": 24,
"Interesting": [
"reading",
"play"
]
}"
*/ /*
toJSON方法,函数过滤器的补充;
1. 若对象内有toJSON,则优先运行,无则返回自身;
2. 若作为第二个參数传入,则对函数进行过滤
*/ var book = {
"title" : "JS大神进阶记",
"page_total":999,
"money":99,
"copyright":"CRPER",
toJSON:function(){
return this.title;
}
} var test = JSON.stringify(book);
console.log(test); //打印值:""JS大神进阶记"" var test2 = JSON.stringify(book,function(key,value){
console.log(value) ; //JS大神进阶记 });
  • parse(): 把符合规范的字符串转为对象
    //接着上面的样例;

  var parseJSON = JSON.parse(person_str);     //把符合书写规范的字符串转为对象

  console.log(parseJSON);    //打印值:  Object {name: "CRPER", age: 24, Interesting: Array[2]}

总结

JSON的值能够表现为这么多种:

1. string

2. number

3. object

4. array

5. true

6. false

7. null

javascript跳跃式前进(3) - 跳入JSON的更多相关文章

  1. ajax 跳入error的一些原因

    先放一个标准的jquery的ajax代码: $.ajax({ type: 'POST', url: 'getSecondClassification', data: {"sort2" ...

  2. jQuery中ajax 跳入error的原因总结

    一个标准的jquery的ajax代码: $.ajax({ type: 'POST', url: 'getSecondClassification', data: {"sort2": ...

  3. 操作系统开发系列—12.b.从Loader跳入保护模式

    现在,内核已经被我们加载进内存了,该是跳入保护模式的时候了. 首先是GDT以及对应的选择子,我们只定义三个描述符,分别是一个0~4GB的可执行段.一个0~4GB的可读写段和一个指向显存开始地址的段: ...

  4. Javascript调用C#后台方法及JSon解析

    Javascript调用C#后台方法及JSon解析   如何使用Ajax 调用C# 后台方法. 本文目录 如何使用Ajax 调用C# 后台方法. 1.后台(.cs)测试方法 2.前台调用(javasc ...

  5. javascript笔记8-表单脚本、JSON、AJAX

    通过表单提交,很方便的可以从界面把参数传递给后台. 如果前后台我们有大量数据需要交互,JSON方便我们传递和读取. 如果需要更新一个界面的某一部分数据,并不想刷新界面,就要用到Ajax. 1. 表单脚 ...

  6. JavaScript(第三十一天)【JSON】

    前两章我们探讨了XML的结构化数据,但开发人员还是觉得这种微型的数据结构还是过于烦琐.冗长.为了解决这个问题,JSON的结构化数据出现了.JSON是JavaScript的一个严格的子集,利用JavaS ...

  7. JavaScript第三天 boolean和json

    布尔值 true:非零数字.非空字符串.非空对象 false:数字零.空字符串.null空对象.undefined  json JSON(JavaScript Object Notation) 是一种 ...

  8. 从上一个页面跳入新页面时,如何拿URL中的参数

    var url = document.URL; //获取当前页面的url var urlA = url.split('?');//以url中的问号进行分割; var goodscode = urlA[ ...

  9. [javascript]各种页面定时跳转(倒计时跳转)代码总结

    (1)使用setTimeout函数实现定时跳转(如下代码要写在body区域内) <script type="text/javascript"> //3秒钟之后跳转到指定 ...

随机推荐

  1. 北京Python筛选过程中应注意什么

    计算机初级爱好者普遍喜欢Python,因为Python干净利索,简单直接.它编写代码的速度非常的快,而且非常注重代码的可读性,非常适合多人参与的项目.很多人选择了培训,那么北京Python培训筛选过程 ...

  2. 设计模式的征途—7.适配器(Adapter)模式

    在现实生活中,我们的笔记本电脑的工作电压大多数都是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够工作在220V的电压下工作?答案:引入一个电源适配器,俗称变压器,有了这个电源适配器, ...

  3. File I/O

    File I/O Introduction     We'll start our discussion of the UNIX System by describing the functions ...

  4. MySQL plugin结构

    1.背景 MySQL插件安装语法如下: 13.7.3.3 INSTALL PLUGIN Syntax INSTALL PLUGIN plugin_name SONAME 'shared_library ...

  5. vim编辑器介绍及其常用命令

    vim简单的介绍 Vim 编辑器是一个模式编辑器 . 这意味着在不同状态下编辑器有不同的行为模式 . 两个基本的模式是 Normal 模式和 Insert 模式 ,还有可视模式. 在 Normal 模 ...

  6. Unity3D游戏GC优化总结---protobuf-net无GC版本优化实践

    protobuf-net优化效果图 protobuf-net是Unity3D游戏开发中被广泛使用的Google Protocol Buffer库的c#版本,之所以c#版本被广泛使用,是因为c++版本的 ...

  7. 盘点一下立过的flag并立几个flag

    暑假前说了,要学opencv3,要看完冰火,要健身,要家教挣钱. 好样的,全都没落下. opencv3几乎是把80%的demo码了一遍. 冰火看完,还顺带学了一波知识,收获颇丰,搞到了马丁老爷子的几本 ...

  8. lua luaconf解读

    定义了一些跟平台相关的宏,明确指出一些不推荐使用的函数,如lua_cpcall.lua_strlen

  9. scala时间处理

    1.获取当前时间的年份.月份.天.小时等等 val nowDay=LocalDate.now().getDayOfMonth val nowDay=LocalTime.now().getHour 2. ...

  10. 【架构篇】OCP和依赖注入

    描述 本篇文章主要讲解 : (1)OO设计OCP原则: (2)依赖注入引入 (3)依赖注入分析 (4)依赖注入种类 1   内容区 1.1   IOC背景 (1)Ralph E. Johnson &a ...