JSON语法规则
JSON语法是javascript对象表示语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
JSON名称/值对
JSON数据的书写格式是:名称/值对。
名称/值对组合中的名称写在前面(在双引号中),值对写在后面(同样在双引号中),中间用冒号隔开:”firstName”:”John”
JSON值
JSON值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true或false)
数组(在方括号中)
对象(在花括号中)null
JSON正常就是由对象和数组组成,对象使用对象的方法来进行操作。数组使用数组的方法来进行操作。
数组
varourcountry=[[“北京市”],[“上海市”],[“合肥市”,”芜湖市”,”蚌埠市”]];//数组alert(ourcountry[2][1]);
JSON对象
varstatus_process={“name5″:’闲置期’,”name1″:’播种期’,”name2″:’苗期’,”name3″:’生长期’,”name4”:’采收期’}alert(status_process[“name5”]);alert(status_process.name5);//两个都为:闲置期
JSON字符串
所谓json字符串,是指该字符串变量的值与json的格式相同,但是不是json对象,比如:
vars1=”{“;vars2=”‘name5′:’闲置期’,’name1′:’播种期’,’name2′:’苗期’,’name3′:’生长期’,’name4′:’采收期’”;vars3=”}”;varstatus_process=s1+s2+s3;
JSON数组遍历
packJson=[
{“name”:”zhang”,”password”:”123″},
{“name”:”li”,”password”:”456″}
];for(varpinpackJson){//遍历json数组时,这么写p为索引,0,1alert(packJson[p].name+””+packJson[p].password);
}//或者for(vari=0;i<packJson.length;i++){alert(packJson[i].name+””+packJson[i].password);
},JSON数组的操作,1.定义
varjosnArry=[];
2.添加
jsonArry.push(jsonObj);
3.删除
deletejsonArry[0];splice(index,length):
4.循环访问数组
a.jquery
$.each(jsonArry,function(index,item){varuserId=item.userId;
});
b.一般方式
for(vari=0;i<jsonArry.length;i++)
{varuserId=jsonArry[i].userId;
}
c.特殊方法
for(variteminjsonArry)
{varuserId=jsonArry[item].userId;//注意:此处的item不是数组项,而是数组项的索引}
JSON对象遍历
myJson={“name”:”ji”,”password”:”123″};for(varpinmyJson){//遍历json对象的每个key/value对,p为keyalert(p+””+myJson[p]);
}
字符串和json对象和json对象数组相互转换
varjsonStr=”{\”userId\”:\”001\”}”;//json对象字符串varjsonArryStr=”[{\”userId\”:\”001\”},{\”userId\”:\”002\”}]”;//json数组字符串varjsonObj=JSON.parse(jsonStr);//字符串转为json对象varjsonArry=JSON.parse(jsonArryStr);//字符串转为json数组varjsonStr=JSON.stringify(jsonObj);//json对象转为字符串varjsonArryStr=JSON.stringify(jsonArry);//json数组转为字符串alert(jsonStr);alert(jsonArryStr);alert(jsonObj.userId);alert(jsonArry[0][‘userId’]);
tips:
只有数组或者json数组才可以使用length方法。json对象使用length方法无效。
如果json对象的子元素是数组或者json数组,也可以使用length方法。可以用于遍历数据。
json数组数据格式详解
JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLanguage,StandardECMA-2623rdEdition-December1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C,C++,C#,Java,JavaScript,Perl,Python等)。这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
(1)“名称/值”对的集合(Acollectionofname/valuepairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hashtable),有键列表(keyedlist),或者关联数组(associativearray)。
(2)值的有序列表(Anorderedlistofvalues)。在大部分语言中,它被理解为数组(array)。
JSON具有以下这些形式:
1.对象
对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。
2.数组
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true、false、null、对象(object)或者数组(array)。这些结构可以嵌套。
字符串(string)是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(characterstring)。
字符串(string)与C或者Java的字符串非常相似。
数值(number)也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。
使用范例及注意事项
1.对象的每个属性都要有双引号,否则json数据不能正常加载
我们写一个python脚本做下测试:
importjsonwithopen(“data.json”,’r’)asload_f:data=json.load(load_f)print(data)
(1){“name”:”taoeyhuang”,”age”:18}
(2){“name”:”taoeyhuang”,”age”:18,”sex”:”male”,hair:”black”}这里hair属性没有带双引号
异常日志“json.decoder.JSONDecodeError:Expectingpropertynameenclosedindoublequotes:line1column44(char43)”我们也可以看出异常的原因是双引号的问题
2.多对象范例(数组+对象)
数组中可以嵌套数组也可以嵌套对象
{“name”:”BeJson”,”url”:”http://www.bejson.com”,”page”:88,”isNonProfit”:true,”address”:{“street”:”科技园路.”,”city”:”江苏苏州”,”country”:”中国”},”links”:[{“name”:”Google”,”url”:”http://www.google.com”},{“name”:”Baidu”,”url”:”http://www.baidu.com”},{“name”:”SoSo”,”url”:”http://www.SoSo.com”}]}
?
Tips:本站所有资源均收集自互联网,分享目的仅供学习参考,资源版权归该资源的合法拥有者所有。
Tips:若本站所发布的资源侵犯到您的合法权益,请及时联系 hqteam@qq.com 删除!
暂无评论内容