文档章节

JSON笔记整理

蒙懵懵
 蒙懵懵
发布于 2016/04/12 17:39
字数 804
阅读 93
收藏 9

JSON是javascript的一个子集,利用js中的一些儿模式来表示结构化数据。不是只有javascript才使用JSON,JSON是一种数据格式,很多编程语言都有针对JSON的解析器和序列化器。

JSON的语法可以表示一下三种类型的值:

  • 简单值:可以在JSON中表示字符串、数值、布尔值和null ; 但不支持js中的特殊值 undefined 

  • 对象:表示的是一组有序的键值对儿

  • 数组:表示的是一组有序的值得列表


简单值:

-数值(整数或者浮点数 

-字符串(必须在引号里)

-布尔值

-null

对象值:

    javascript中的对象字面量:

var person = {
    name:"Zhou",
    age:29
};

json中的对象要求必须给属性加引号,如下:

{
    "name":"Zhou",
    "age":29
}

JSON中没有变量的概念,其次末尾不用分号。属性的值可以是简单值,也可以是复杂类型值,可以在对象中嵌入对象:

{
    "name":"Zhou",
    "age":29,
    "school":{
         "name":"XXX College",
         "address":"XXXXXXXXXX"
    }
}


数组:

JSON数组采用的及时JS里的数组字面量形式

[ 25, "age", true ]

同样没有变量和分号。



JSON对象有两个方法:stringify() 和 parse(),这两个方法 分别用于把javascript对象序列化为JSON字符串解析为javascript值。

var people = { 
    name:"小明",
    age:25,
    friends:[
          "小红",
          "小兰"
    ]   
}
var json = JSON.stringify(people);
alert(json);  

// 返回结果:{"name":"小明","age":25,"friends":["小红","小兰"]}

上面例子JSON.stringify()把一个javascript对象序列化为一个JSON字符串,然后将它保存在变量json中。默认请款下,输出的JSON字符串不包含任何空格字符或缩进。

在序列化javascript对象是,所有函数及原型成员都会被有意忽略,值为undefined的任何属性也会被跳过。


将JSON字符串直接传递给JSON.parse()就可以得到相应的javascript的值。




JSON除了序列化javascript对象外,还可以接受多个参数。

第二个参数可以是个数组,也可以是函数:

var people = { 
    name:"小明",
    age:25,
    friends:[
          "小红",
          "小兰"
    ]   
}
var json = JSON.stringify(people,["name","friends"]);
alert(json);  

//返回结果:{"name":"小明","friends":["小红","小兰"]}


如果第二个参数是函数:

        var people = { 
                name:"小明",
                age:25,
                friends:[
                      "小红",
                      "小兰"
                    ]   
        }
        var json = JSON.stringify(people,function(key,value){
            switch(key){
                case "name": 
                    return "小军";
                case "age": 
                    return 20;
                case "friends": 
                    return null;
                default: 
                    return value;
            }
        });
        alert(json);
        
        //返回结果:{"name":"小军","age":20,"friends":null}


第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示缩进的空格数,最大缩进空格数为10,所有大于10的值都会自动转换为10。只要传入有效的数值,结果字符串就会包含换行符。

如果缩进参数是字符串而非数值,则这个字符将在JSON字符串中被用作缩进字符,缩进字符串最长不能超过10个字符长,超过10个结果中将出现前10个字符。

        var people = {         
            name:"小明",
            age:25,
            friends:[
                  "小红",
                  "小兰"
            ]   
        }
        var json = JSON.stringify(peopl,null,10);
        //var json = JSON.stringify(peopl,null,"hello");
        alert(json);


阅读拓展链接:

JSON.stringify()方法详解

http://www.json.org/index.html

http://www.cnblogs.com/zxlovenet/p/3566802.html#c001






© 著作权归作者所有

蒙懵懵
粉丝 4
博文 14
码字总数 8417
作品 0
深圳
私信 提问
阿里云IoT平台CoAP接入 3 了解下物模型

版权声明:本文为twowinter原创文章,请联系微信公众号twowinter,未经博主允许不得转载。 https://blog.csdn.net/iotisan/article/details/80275772 关于阿里云IoT平台CoAP接入,可见笔记阿...

iotisan
2018/05/11
0
0
译文:笔记本软件 Quiver 简介

英文原文:http://happenapps.com 原文作者:HappenApps, Inc. 中译:不迟any Quiver 程序员的笔记本 Quiver app icon 概述 Quiver 是一款为程序员打造的笔记本。它可以让你方便的在一条笔记...

不迟any
2017/12/10
0
0
go提交json、获取json、解析json

猜你喜欢 Go语言的Json管理模式 golang json string remove field [笔记] Golang JSON go: json解析库go-simplejson使用 Golang 1.6: 数据库NULL值遇到JSON和模板(Template) beego下ie提示下...

d_watson
2016/05/24
43
0
SpringMVC框架 -- json数据交互

一.JSON简单介绍: 参考笔记:JSON简单快速入门 二.json数据交互 请求json 输出json 需要请求数据为json,需要在前端转为json不太方便。不常用 请求key/value、输出json。常用 1.环境搭建 下...

Mr_欢先生
2017/09/28
0
0
Golang学习笔记目录

Golang 介绍 Go语言是谷歌2009发布的第二款开源编程语言。 Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。...

ChainZhang
2017/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

MongoDB系列-解决面试中可能遇到的MongoDB复制集(replica set)问题

关注我,可以获取最新知识、经典面试题以及微服务技术分享   MongoDB复制集(replica set):MongoDB复制集维护相同数据集的一组mongod进程,复制集是生产部署的基础,具有数据冗余以及高可用...

ccww_
32分钟前
4
0
SpringBoot系列:Spring Boot集成Spring Cache,使用RedisCache

前面的章节,讲解了Spring Boot集成Spring Cache,Spring Cache已经完成了多种Cache的实现,包括EhCache、RedisCache、ConcurrentMapCache等。 这一节我们来看看Spring Cache使用RedisCache。...

杨小格子
41分钟前
3
0
OpenJDK之CountDownLatch

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CountDownLatch是Doug Lea在JDK1.5中引入的,作用就不详细描述了, await()方法,如果还有线程在执行,那么当前线程...

克虏伯
47分钟前
4
0
简单编程

1.编写一个程序,提示用户输入名和姓,然后以“名,姓”的格式打印出来。 #include<stdio.h>int main(){char name[3];char family[3];printf("Please input your name and family:\n...

电子工程197沈志初
51分钟前
4
0
详解Mysql分布式事务XA(跨数据库事务)

在开发中,为了降低单点压力,通常会根据业务情况进行分表分库,将表分布在不同的库中(库可能分布在不同的机器上)。在这种场景下,事务的提交会变得相对复杂,因为多个节点(库)的存在,可...

slagga
56分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部