这篇文章将为大家详细讲解有关JSON数据的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
站在用户的角度思考问题,与客户深入沟通,找到埇桥区网站设计与埇桥区网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站设计、成都外贸网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册、雅安服务器托管、企业邮箱。业务覆盖埇桥区地区。JSON 数据详解
一、json值的类型
1.简单值: 可以表示字符串,数值,布尔值,null不支持undefined(json的数值表示: 2 )
2.对象: 一组有序的键值对,每个键值对的值可以是简单值,也可以是复杂数据类型。(json的字符串:“hello world”)。json字符串与JavaScript字符串的区别,json必须用双引号。
3.数组:一组有序值的列表,数组的值可以是简单值,也可以是复杂数据类型。
不支持变量,函数,以及对象实例
二、json对象与javascript对象
区别:
//javascript对象 var obj = { name: "liu", age: 33, }; // json对象 { "name": "liu", "age": 33, }
没有声明变量(json中没有变量的说法)
没有末尾分号()
json中属性也要加双引号
三、字符串与json对象转换
1、JSON.parse()。parse把字符串解析成原生javascript值(javascript对象);每个属性名都必须用双引号
var str = '{"name":"huangxiaojian","age":"23"}'; console.log(JSON.parse(str)); //Object { name: "huangxiaojian", age: "23" }
接收另一个参数,为区别JSON.stringify()的过滤函数(过滤器), 因而叫还原函数。如下:
var book = { title: "hello", author: [ "apple" ], year: 300, releaseDate: new Date(2016) }; var jsonText = JSON.stringify( book ) var bookCopy = JSON.parse( jsonText, function( key, value ) { if (key == "releaseDate" ) { return new Date( value ); } else { return value; } } ); console.log( bookCopy.releaseDate.getFullYear() );
以上代码book对象,有个releaseDate属性,保存Date对象,经过序列化后变成有效的JSON数据字符串,然后经过解析又在bookCopy中还原为一个Date对象,当遇到releaseDate键值时,会基于相应的值创建一个新的Date对象,结果就是bookCopy.releaseDate属性中保存一个新的Date对象。
2、JSON.stringify( object, selector, retract ) 对象,过滤器(数组或函数),保留缩进。
JSON.stringify()把json对象序列化为字符串。(忽略函数、原型)
var a = {a:1,b:2}; console.log(JSON.stringify(a)); //{"a":1,"b":2}不包含任何空格字符或缩进
3、JSON.stringify()第二个参数,过滤器为数组
过滤器:可以使数组(如果是数组,就把数组中有的属性保留),也可以是函数(如果是函数,传两个参数:属性和属性值)。
var person = { name: "liu", age: 33, eat: [ "apple" ], sex: "man" } var jsonText = JSON.stringify( person, ["eat", "age" ] ) console.log( jsonText ) //{"eat":["apple"],"age":33}
4、JSON.stringify()第二个参数为函数
函数:函数的两个参数()。switch中参数是属性名(必须字符串)。如果是undefined则忽略属性,(这个value参数是整个序列化后的对象)
特别注意,value在《javascript高级程序设计第三版》中表述和我的不同。可能是我的理解有问题,但是我测试了,结果也是序列化后的值。谁能解决了可以告诉我。(page:566~567)
var person = { "name": "liu", "age": 33, "eat": [ "apple" ], "sex": "man" } var jsonText = JSON.stringify( person, function( key, value ) { // console.log( value ) switch("eat") { case "eat": return [3,4,5,5,5].join(","); case "age": return 33; case "sex": return undefined; default: return value; } } ) console.log( jsonText ) //"3,4,5,5,5"
5、缩进,大缩进为10。超过10 会转换为10
var person = { "name": "liu", "age": 33, "eat": [ "apple" ], "sex": "man" } var jsonText = JSON.stringify( person, null, 4 ) console.log( jsonText ) /////////////////////////结果,带有格式//////////////////// { "name": "liu", "age": 33, "eat": [ "apple" ], "sex": "man" } //特别的缩进方式 var jsonText = JSON.stringify( person, null, "---" ) console.log( jsonText ) /////////////////////////结果,带有格式//////////////////// { ---"name": "liu", ---"age": 33, ---"eat": [ ------"apple" ---], ---"sex": "man" }
6、toJSON()方法,返回自身的json数据格式。
var date = new Date() console.log( date.toJSON() ) //person自身没有json数据格式,这是错的。 var person = { "name": "liu", "age": 33, "eat": [ "apple" ], "sex": "man" } console.log( person.toJSON() )
7、为对象添加toJSON()方法,返回字符串则是字符串格式,对象则是对象格式,单个数值就是数值格式。
var person = { "name": "liu", "age": 33, "eat": [ "apple" ], "sex": "man", "toJSON": function () { return this.age } } console.log( person.toJSON() ) // 33
toJSON()可以做过滤器补充
8、假设一个对象传入JSON.stringify(),序列化该对象的顺序
存在toJSON()方法,且能获取有效值,则调用该方法,否则按默认顺序序列化。
如果提供了第二个参数,应用这个函数过滤器,传入函数过滤器的值是第1步的返回值。
对第2步返回的每个值进行序列化。
如果提供了第三个参数,执行相应的格式化。
关于“JSON数据的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。