1.什么是JSON
JSON-JavaScript对象批注,前两个字大家应该都知道,最后一个批注的意思是“批注,批注”。当它们连接在一起时,它们就变成了JSON。
它是一种轻量级的数据交换格式,是基于Javascript的子集,可以称为Javascript对象表示法,是一种存储和交换文本信息的语法。但是,它不是Javascript独有的数据格式,JSON可以用很多其他语言进行解析和序列化。
2.JSON的起源
21世纪初,web开发领域最知名的技术权威之一、ECMA JavaScript2.0标准化委员会成员道格拉斯克洛克福特,被JavaScript之父Brendan Eich称为JavaScript的Yoda,曾担任雅虎!高级JavaScript架构师,目前是PayPal的高级JavaScript架构师,试图找到一种更简单的数据交换格式,可以在服务器之间交换数据。当时通用的数据交换语言是XML,但是道格拉斯克洛克福特认为XML的生成和解析太麻烦了,所以他提出了一种更简化的格式,就是JSON。
JSON的规范很简单,只用一页几百字就可以解释清楚,道格拉斯克拉福德说这个规范永远不需要升级,因为所有的规定都已经规定好了。
3.为什么使用JSON
JSON类似于XML,比XML更小、更快、更容易解析。但同时,XML具有不可替代性,应根据使用场景选择更合适的。
JSON语法简单易懂,对象信息自描述,数据传输量小,不占用带宽;
虽然JSON远不如世界通用语言emoji,但它的支持力度已经非常可观了。支持的语言包括C、C#、Java、JavaScript、PHP、Python、Ruby等;
对于Ajax应用程序,JSON比XML更快、更容易使用。
JSON可读性和可扩展性很强,编码难度相对较低。即使不使用工具,也可以编写标准的JSON。
.
4.如何使用JSON
(JSON的基本语法
用逗号(,)分隔并行数据
映射用冒号(:)表示
映射集用大括号({})表示
平行数据集用方括号([])表示
例如:
上赛季的MVP是斯蒂芬库里,场上位置是控卫,球衣号码是30号,球队是金州勇士
上赛季的FMVP是勒布朗詹姆斯,场上位置是小前锋,球衣号码是23号,球队是克利夫兰骑士队
用JSON格式可以表示为:
【{ 'MVP': '斯蒂芬库里','位置' : '控卫','号码' :'30 ','球队' : '金州勇士' },{ 'FMVP': '勒布朗詹姆斯','位置' : '小前锋','号码' :' 23 ','球队' : '克利夫兰骑士' }】更复杂的数据也可以通过JSON来表达,比如以下信息:最喜欢的编辑是威震,最喜欢的运动是马刺的控卫是托尼帕克和帕蒂米尔斯,控卫是马努吉诺比利和丹尼格伦,小前锋是科怀伦纳德和凯尔安德森,大前锋是拉马库斯阿尔德里奇和李尚义,中锋是德怀恩德德蒙和保罗加索尔。
{ 'favoriteEditor': '崇高',' favoriteSport': '篮球',' favoriteTeam':{ '马刺' :[ { 'PG': '托尼帕克',' SG': '丹尼格伦',' SF': '科怀伦纳德',' PF': '拉马库斯阿尔德里奇',' C': '保罗加索尔' },{ 'PG': '帕蒂米尔斯',解析并序列化' SG '中的JSON
通过eval()函数将JSON字符串解析为JavaScript原生值
var str='[{'name':'james ',' height':'203 ',' number':'23'},{'name':'kobe ',' height':'198 ',' number ' : ' 24 ' }]';//定义JSON字符串var oJson=eval(str);//通过eval()函数解析获取JavaScript原生值//然后就可以操作alert (oJSon [0]。名称)通过js;//james alert(oJson[1])。高度);//198通过全局对象JSON的两种方法操作:parse()和stringify()
Parse()可以将JSON字符串转换为JavaScript原生值:
var str='[{'name':'james ',' height':'203 ',' number':'23'},{'name':'kobe ',' height':'198 ',' number ' : ' 24 ' }]';//定义JSON字符串var oJson=JSON . parse(str);//获取JavaScript原生值document.write ('name:' oJson[1])。姓名“br/”身高:“oJson[1]。身高' cm' 'br/' '球衣号码:' oJson[1]。通过JSON对象的解析方法;
Parse()也可以传递第二个参数。此时,您可以在恢复JavaScript值时用所需的值替换原始值,如下所示:
var str='[{'name':'james ',' height':'203 ',' number':'23'},{'name':'kobe ',' height':'198 ',' number ' : ' 24 ' }]';Varojson=JSON.parse (str,function (key,value){ if(' name '==key){ return ' player ' value;} else if(' number '==key){返回值' jersey ';}else{返回值;} });警报(oJson[0]。名字'更好还是' oJson[1]。名称'更好' ' n ' '您喜欢' oJson[0]吗。' number '或' oJson[1]。数字');
Stringify()可以将本机JavaScript值转换为JSON字符串:
var oJson=[{姓名: '詹姆斯',身高: 203,编号: 23 },{姓名: '科比',身高: 198,编号: 24 }];var jsonStr=JSON . stringify(oJson,['name ',' number'],4);alert(jsonStr);
JSON.stringify(oJson,['name ',' number'],4);中的第一个参数表示要转换的JS对象;第二个参数用于过滤结果,这意味着只剩下名称和数字,不需要其他键和对应的值;第三个参数指示JSON字符串中保留的缩进数量,缩进时可读性更好。也可以是字符串,如'-',弹出结果如下:
如果不需要保持缩进,最后一个参数可以为空,但如果不需要过滤,第二个参数需要设置为null占位符,不能为空,否则最后一个参数无效。
第二个参数也可以是一个函数,可以执行更复杂的过滤:
varojson=[{姓名: '詹姆斯',身高: 203,位置: '小前锋' },{姓名: '科比',身高: 198,位置: '得分后卫' }];Var JSON STR=JSON。Stringify (ojson,function (key,value){ switch(key){ case ' name ' :返回' player '值;Case 'height':返回' height '值' cm ';Case 'position':返回' position '值;default:返回值;} },4);alert(jsonStr);
支持JSON对象的浏览器有IE8、Chrome、FireFox3.5、Opera10.5和Safari4。不支持的浏览器可以通过json.js这个开源库来模拟。
以上就是本文的全部内容。希望本文的内容能给大家的学习或工作带来一些帮助,也希望多多支持我们!