前言

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. mac链接linux终端,shell脚本发布代码

    项目的业务需求:从mac端直接连上linux服务终端,并发布相关的代码 一.使用ssh链接上linux服务端 1.cd ~/.ssh 2.vi config,按照下面的内容配置config文件,然后: ...

  2. 【前端】跨浏览器事件处理程序EventUtil.js个人注释及详解

    <javascript高级程序设计>跨浏览器事件处理程序EventUtil.js个人注释 EventUtil.js // 跨浏览器事件处理程序封装 var EventUtil = { // ...

  3. 设计模式的征途—12.享元(Flyweight)模式

    现在在大力推行节约型社会,“浪费可耻,节俭光荣”.在软件系统中,有时候也会存在资源浪费的情况,例如,在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高.那 ...

  4. jfinal 源码学习

    源由 最近闲来无事,顺带看了下jfinal的源码,以下均为自己的个人理解,如有错误请指定: jfinal 使用 在web.xml中配置JfinalFilter 并定义JfinalConfig的类 自定 ...

  5. Vue 浅析与实践

    欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:曾柏羲 导语 入职接到的第一个需求是实现一个关于K歌实体售卖的ERP系统,管理系统过去做过不少,这次打算换个姿势,基于时下正热但早已不新 ...

  6. redis—操作基础

    内存数据库: 1.双击redis-server.exe =>启动2.双击redis-cli.exe =>打开管理控制台3.查看所有key keys *4.查看key类型 type myKe ...

  7. Java之多态

    一.多态 1.含义 一种类型,呈现多种状态.主要关注类多态.方法多态. 2.多态的前提:继承 使用父类引用指向子类对象: Animal a1 = new Cat(): Object a1 = new ...

  8. 自动化运维工具——ansible详解(一)

    ansible 简介 ansible 是什么? ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.chef.func.fabric)的优点,实现了批量系统 ...

  9. MongoDB一:入门(安装与配置)

    一.简介 MongoDB  是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. mongoDB MongoDB 是一个介于关系数据库和非关系数据库 ...

  10. ThinkPHP中对系统常量的使用

    /Wen 当前模块的URL地址 /Wen/postname 当前操作的URL地址 /thinkphp-changliang/ 当前URL地址 APP_DEBUG 是否开启调试模式(框架两种模式:[默认 ...