相关推荐:javascript教程
1、json对象任务描述本关任务:练习在javascript中定义json对象。
具体要求如下:
定义一个json对象jsonobject,它有三个属性:key1、key2和key3,它们的值分别是参数a、b和c;
删除其中名字为key3的属性;
删除完成后,遍历其余的所有属性,返回各属性的值连接成的字符串,中间用,隔开
json既然是用来传递数据的,必然要先存储数据,存储数据需要采用一定的数据格式,json常用的数据格式有json对象、json数组和json字符串。
什么是json对象json对象(通常叫json)是一种文本数据的交换格式,用于存储和传输数据。示例如下:
{name:jerry, age:15}
这就是一个简单的json对象,它的规则是:
数据以键/值对的形式存在;数据之间用逗号间隔;大括号表示保存对象;方括号表示保存数组。json对象与javascript对象的区别json是基于javascript语法的,所以json中也有对象的概念,但是和javascript中的对象有一些小的区别。
定义一个javascript对象:var myobject = { id:1, name:peter bruce, first name:bruce, display:function() { console.log(this.name); }}
定义一个json对象:{id:1,name:peter bruce,first name:bruce}
三点区别:(1)json对象的属性名(key)必须被包含在双引号之中,而javascript对象除了有空格的属性名、中间有连字符-的属性名必须在双引号之中外,其它随意;
(2)不能在json对象中定义方法,而在javascript对象中可以;
(3)json对象可以被很多语言操作,而javascript对象只有js自己可以识别。
定义json对象的方法如下用一个{}包含在内,内部是若干个属性名和属性值构成的键值对,键值对之间用,隔开,属性名和属性值之间用:隔开,属性值可以是以下任意一种数据类型的数据:数字、字符串、json数组、json对象、null。如:
{a:1,b:2.12,c:true,d:string,e:null};
属性值是json数组或者json对象的情况稍复杂,后面的关卡将介绍。
在javascript中使用json对象支持json的语言都能够使用json对象,这里仅介绍在javascript中如何使用json对象。
在javascript中定义一个json对象:var jsonobject = {name:js,number:2};
操作属性,使用.或者[]:console.log(jsonobject.name);//读属性,输出jsconsole.log(jsonobject[name]);//读属性,输出jsjsonobject.name = javascript;//写属性,给name属性赋值javascript
删除属性,使用delete:var jsonobject = {name:js,number:2};delete jsonobject.name;//删除name属性
遍历属性,使用for-in循环:var jsonobject = {name:js,number:2};for(att in jsonobject) { console.log(jsonobject[att]); //依次输出js、2}
代码文件function mainjs(a,b,c) { //请在此处编写代码 /********** begin **********/ var jsonobject = {key1:a,key2:b,key3:c}; delete jsonobject.key3; return a+,+b; /********** end **********/}
2、json数组任务描述本关任务:定义并操作json键值对中的值。
具体要求如下:
已知myjson的第三个属性的值是一个数组,参数a是一个数字,要求将数组中前a个元素(这些元素都是字符串类型)拼接起来,元素之间用,隔开,返回拼接后的字符串;比如a为2的时候,你需要返回js,java。json属性对应的值(value)是一个数组json键值对中的值(value)可以是一个数组比如:
{country:china,population:1.3billion,bigcity:[peking,shanghai,shenzhen,hongkong]}
属性bigcity的值有多个,放在一个数组里面。
上面例子里面,数组的每一个元素都是字符串。其实,数组的每一个元素还可以是另外一个json对象。比如:
{class:高三一班,studentnumber:70,score:[ {name:liming,score:128}, {name:zhanghua,score:134}, {name:shenlu,score:112}]}
上面的score属性的值是一个数组,这个数组的每一个元素是一个json对象。
数组的一些操作读写元素:var myjson = {country:china,population:1.3billion,bigcity:[peking,shanghai,shenzhen,hongkong]}console.log(myjson.bigcity[1]);//打印出shanghaimyjson.bigcity[0] = guangzhou;//第一个元素被赋值为guangzhou
遍历:var myjson = {country:china,population:1.3billion,bigcity:[peking,shanghai,shenzhen,hongkong]}for(var i = 0;i < myjson.bigcity.length;i++) { console.log(myjson.bigcity[i]);//依次输出peking,shanghai,shenzhen,hongkong}
代码文件【第一种方法是后来写的,刚开始用的是下面的第二种办法,因为当时做不出来,就想着直接输出】
var myjson = { category:computer, detail:programming, language:[ js,java,php,python,c ]}function mainjs(a) { a = parseint(a); //请在此处编写代码 /********** begin **********/ var b = ; for(var i=0;i var myjson = { category:computer, detail:programming, language:[ js,java,php,python,c ]}function mainjs(a) { a = parseint(a); //请在此处编写代码 /********** begin **********/ if(a==1){ return myjson.language[0]; } if(a==2){ return myjson.language[0]+,+myjson.language[1]; } if(a==3){ return myjson.language[0]+,+myjson.language[1]+,+myjson.language[2]; } if(a==4){ return myjson.language[0]+,+myjson.language[1]+,+myjson.language[2]+,+myjson.language[3]; } if(a==5){ return myjson.language[0]+,+myjson.language[1]+,+myjson.language[2]+,+myjson.language[3]+,+myjson.language[4]; } /********** end **********/}
3、json字符串任务描述本关任务:练习json字符串和javascript对象的相互转换。
具体要求如下:
先将json字符串jsonstring转换为javascript对象jsonobject;然后将jsonobject的key1属性的值设置为mainjs()函数的参数a;最后将jsonobject转换为json字符串,并返回该字符串在前端和后台之间传递数据可以使用json,但是实际上传递的是json字符串,而json对象是不可以直接进行传递的。
json字符串json字符串就是在json对象两边套上'形成的字符串,如:
var jsonobject = {k1:v1,k2:v2};//json对象var jsonstring1 = '{k1:v1,k2:v2}';//json字符串
上面的jsonsring1就是json字符串,可以直接从前端传到后台或者后台传到前端。
当javascript收到从后台传来的json字符串后,怎么把它变成json对象方便处理呢?
json字符串到javascript对象json.parse(a,b)方法将json字符串a转换为javascript对象。b是一个可选的函数参数。
var jsonstring1 = '{k1:v1,k2:v2}';console.log(json.parse(jsonstring1));//输出object {k1: v1, k2: v2}
函数参数b按从里到外的顺序作用在对象的所有属性上,最后一个作用的是对象本身:
//对象的每一个属性的值加1var text = '{ key1:1, key2:2, key3:2.2}';var obj = json.parse(text, function (key, value) { if(key === '')//当遇到对象本身时,不进行加1操作 return value; return value+1;//对属性值加1});console.log(obj); //输出object {key1: 2, key2: 3, key3: 3.2}
如上面所示,函数的参数有两个,其中key表示属性的名字,value表示属性的值,当遇到对象本身时,key的值为'',即空字符串。
json对象转换为json字符串json.stringify(a,b,c),a是待转换的json对象,b和c为可选参数。
var jsonobject = {k1:v1,k2:v2};json.stringify(jsonobject);//json对象转换为json字符串
参数b为函数时,该函数按照从里到外的顺序处理json对象的每一个属性,最后一个处理的是json对象本身,处理完后再转为json字符串:
//对象的所有属性值加1,再转为字符串var jsonobject = {k1:1,k2:2.2};var jsonstring = json.stringify(jsonobject,function(k,v){ if(k === '')//处理到了json对象本身 return v; return v+1;//所有的属性的值加1});console.log(jsonstring); //输出{k1:2,k2:3.2}
参数b还可以是数组,数组存储的是属性的名字,用来指定只转换哪些属性:
//转换对象中特定的属性var jsonobject = {k1:1,k2:2.2,k3:3};var jsonstring = json.stringify(jsonobject,[k1,k2]);console.log(jsonstring);//输出{k1:1,k2:2.2}
这里简单介绍一下c:
var str = [name:tom,age:16];var obj1 = json.stringify(str);var obj2 = json.stringify(str,null,4);console.log(obj1); //输出{name:tom,age:16}console.log(obj2); //输出//{// name: tom,// age: 16//}
参数c:文本添加缩进、空格和换行符,如果 c 是一个数字,则返回值文本在每个级别缩进指定数目的空格,如果 c 大于 10,则文本缩进 10 个空格。
代码文件var jsonstring = '{key1:value1,key2:value2}';function mainjs(a) { //请在此处编写代码 /********** begin **********/ var jsonobject = json.parse(jsonstring); jsonobject[key1] = a; jsonobject.key1 = a; return json.stringify(jsonobject); /********** end **********/}
相关推荐:javascript学习教程
以上就是javascript学习理解之json(总结分享)的详细内容。
