日期:2014-05-16  浏览次数:20369 次

json键值对的[] 中括号的使用

? 在写代码的时候,我往往因为一个小基础知识点未能掌握好 ,而耗费很多时间。

这次在使用json格式的时候,也遇到这么一个问题,先让我总结一个知识点吧。

?

var LangShen = {"Name":"Langshen","AGE":"28"};

?

这是一个json对象

{ } 大括号,表示定义一个对象,大部分情况下要有成对的属性和值,或是函数
上面声明了一个名为“LangShen”的对象,多个属性或函数用,(逗号)隔开,因为是对象的属性,

那么我们访问的时候会有两种方式:?
访问方式一:LangShen.Name、LangShen.AGE

访问方式二:LangShen["Name"]、LangShen["AGE"]

就是这么一个小小的方式,会有什么区别呢

下面我写些自己的理解,如有错误,欢迎指正,

在实际应用中,第一种方式的.Name实际是作为一个对象被调用,而LangShen["Name"]里的name却可以是一个字符串。

这里我列个例子给大家看一下。
<html>
<head>
<title>键值对实现</title>
<script src="jquery-1.4.1.min.js"></script><!--这里需要你自己导入jqurey-->

</head>

<body>
<div>
?<input type="text" value="Amount,saleMoney,ntSaleMoney,invoiceMoney," id="selectValues" />
?<input type="button" value="点击提交" onclick="selectValuesHead();" />
</div>
<script language="javascript">

?//用键值对实现拼接成新的字符串
?var selectValuesHead=function(){
??var f={//单列模式
???newStr:function(){
????var words={
?????purchaseMoney:? "采购总额(总)",
?????ntPurchaseMoney:"不含税采购总额(总)",
?????Amount:???"销售总量(总)",
?????saleMoney:??"销售总额(总)",
?????ntSaleMoney:?"不含税销售总额(总)",
?????invoiceMoney:?"开票总额(网)",
?????ntinvoiceMoney: "不含税开票总额(总)",
?????profitVolume:?"毛利总额(总)",
?????erpOrderNum:?"全部单据数",
?????saleDetailNum:?"销售明细数",
?????purchaseMoney3:?"采购总额(网)",
?????ntPurchaseMoney3:"不含税采购总额(网)",
?????amount3:?? "销售总量(网)",
?????saleMoney3:??"销售总额(网)",
?????ntSaleMoney3:?"不含税销售总额(网)",
?????invoiceMoney3:?"开票总额(网)",
?????ntinvoiceMoney3:"不含税开票总额(网)",
?????profitVolume3:?"毛利总额(网)",
?????webOrderNum:?"网站订单数"
????}
????return words;
???},
???ui: function(){
????var selectValuesHead = $.trim($("#selectValues").val());
????var tempArray=[];//临时数组
????Array.prototype.push.apply(tempArray, selectValuesHead.split(","));
????var valuesHead="";//页面需要使用到的字符串
????var tempLen = tempArray.length;
????for(var i=0;i<tempLen;i++){
?????if(tempArray[i].length>0){
?????valuesHead+="<li>"+this.newStr()[tempArray[i]]+"</li>";
?????}
????}
????alert(valuesHead);
????}
??};
??f.ui();
?}
</script>
</body>
</html>
如上,我打底色的地方,newStr()返回一个json对象,这里就是使用第二种方式来调用,因为tempArray[i]是一个字符串,如你想用第一种方式来调用,是没有办法的。