josnSTR='[
{"name":"小明",
"age":"25",
"spend":[
{"date":"2013/12/17","money":"30元","use":"买香烟"},
{"date":"2013/12/18","money":"100元","use":"喝酒"},
{"date":"2013/12/18","money":"200元","use":"吃饭"}
]
},
{"name":"小花",
"age":"20",
"spend":[
{"date":"2013/12/17","money":"80元","use":"买化妆品"},
{"date":"2013/12/18","money":"10元","use":"吃饭"},
{"date":"2013/12/18","money":"100元","use":"玩乐"}
]
}
]'如果你那个“花费信息”没用的话,可以这么写。
{"name":"小明",
"age":"25",
"spend":[
{"date":"2013/12/17","money":"30元","use":"买香烟"},
{"date":"2013/12/18","money":"100元","use":"喝酒"},
{"date":"2013/12/18","money":"200元","use":"吃饭"}
]
},
{"name":"小花",
"age":"20",
"spend":[
{"date":"2013/12/17","money":"80元","use":"买化妆品"},
{"date":"2013/12/18","money":"10元","use":"吃饭"},
{"date":"2013/12/18","money":"100元","use":"玩乐"}
]
}
]'如果你那个“花费信息”没用的话,可以这么写。
直接写成一个对象,按照你的逻辑给这个对象加属性,然后属性里怎么加全凭你,省的你这么麻烦了。
最终会有一个花费信息的对象,如果你需要这个对象的字符串,需要传到后台,就请使用
JSON.stringify(花费信息对象, null, 2);
后台拿到这个字符串,可以用
JSON.parse(string);
转回对象。
转换成js对象后自己解析试试
有个中文“花费信息”
等javascript 支持中文做变量名时可以转。
<script language="javascript">var s={"huafei":[
{"name":"小明",
"age":"25",
"spend":[
{"date":"2013/12/17","money":"30元","use":"买香烟"},
{"date":"2013/12/18","money":"100元","use":"喝酒"},
{"date":"2013/12/18","money":"200元","use":"吃饭"}
]
},
{"name":"小花",
"age":"20",
"spend":[
{"date":"2013/12/17","money":"80元","use":"买化妆品"},
{"date":"2013/12/18","money":"10元","use":"吃饭"},
{"date":"2013/12/18","money":"100元","use":"玩乐"}
]
}
]};var sl=eval(s);
var str="";
for (var i in s["huafei"])
{
var user=s["huafei"][i];
str+=user["name"]+"**"+user["age"]+"</br>";
document.write(str);
str="";for (var key in user["spend"] ){
var spen=user["spend"][key];str+=spen["date"]+"&"+spen["money"]+"&"+spen["use"]+"</br>";
document.write(str);
str="";
}
}
</script>
</head>
<body>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>使用jQuery选择器实现隔行变色</title>
<script language="javascript" type="text/javascript"
src="js/jquery-1.4.1.js"></script>
<script language="javascript">var s={"huafei":[
{"name":"小明",
"age":"25",
"spend":[
{"date":"2013/12/17","money":"30元","use":"买香烟"},
{"date":"2013/12/18","money":"100元","use":"喝酒"},
{"date":"2013/12/18","money":"200元","use":"吃饭"}
]
},
{"name":"小花",
"age":"20",
"spend":[
{"date":"2013/12/17","money":"80元","use":"买化妆品"},
{"date":"2013/12/18","money":"10元","use":"吃饭"},
{"date":"2013/12/18","money":"100元","use":"玩乐"}
]
}
]};var sl=eval(s);
var str="";$(s["huafei"]).each(function(k,v){str+=v.name+"**"+v.age+"</br>";
document.write(str);
str="";
$(v.spend).each(function(key,val){
str+=val.date+"&"+val.money+"&"+val.use+"</br>";
document.write(str);
str="";
});
});
</script>
</head>
<body>
</body>
</html>
string josnSTR='
{"spendDetail":[
{"name":"小明",
"age":"25",
"spend":[
{"date":"2013/12/17","money":"30元","use":"买香烟"},
{"date":"2013/12/18","money":"100元","use":"喝酒"},
{"date":"2013/12/18","money":"200元","use":"吃饭"}
]
},
{"name":"小花",
"age":"20",
"spend":[
{"date":"2013/12/17","money":"80元","use":"买化妆品"},
{"date":"2013/12/18","money":"10元","use":"吃饭"},
{"date":"2013/12/18","money":"100元","use":"玩乐"}
]
}
]
}'
{"花费信息":[\
{"name":"小明",\
"age":"25",\
"spend":[\
{"date":"2013/12/17","money":"30元","use":"买香烟"},\
{"date":"2013/12/18","money":"100元","use":"喝酒"},\
{"date":"2013/12/18","money":"200元","use":"吃饭"}\
]\
},\
{"name":"小花",\
"age":"20",\
"spend":[\
{"date":"2013/12/17","money":"80元","use":"买化妆品"},\
{"date":"2013/12/18","money":"10元","use":"吃饭"},\
{"date":"2013/12/18","money":"100元","use":"玩乐"}\
]\
}\
]\
}';
var o = eval('(' + josnSTR + ')');
var arr = o.花费信息, item, spend;
var s = ['<table cellpadding="0" cellspacing="0">'];
for (var i = 0; i < arr.length; i++) {
item = arr[i];
s.push('<tr><td width="80">' + item.name + '</td><td width="50">' + item.age + '岁</td><td colspan="3"> </td></tr>');
spend = item.spend;
for (var j = 0; j < spend.length; j++) {
s.push('<tr><td> </td><td> </td><td width="120">' + spend[j].date + '</td><td width="80">' + spend[j].money + '</td><td>' + spend[j].use + '</td></tr>');
}
}
s.push('</table>'); document.write(s.join(''));
答:JSON字符串如果当前节点有子节点,则用中括号括起来,里面的每个对象都用大括号括起来,这样递归向下进行。问题2:JSON字符串在前端解析
一般都是在后台通过序列化以后然后传到前端,那么直接用下面的语句解析
var s1= JSON.parse(s2);其实你这个数据的结构很简单,一个花费信息的类,他有姓名、年龄和花费三个成员,其中花费又是一个链表的集合,可以再定义一个花费类
6楼说的有误。
javascript岁软不支持中文变量名,但是支持中文属性名。
后台前台都可以转,已经验证过。
同意。
后台用JSON.stringify(object,null,2);转成字符串传到前面去。
前端用JSON.parse(str);再转成对象使用。
其中属性名是中文字符也能转,属性值能有特殊字符,也没问题,因为在转的时候stringify会对特殊字符进行转义。
var strjson = ....
$.each(strjson,function(a,a_item){
alert(a+":"+a_item)
})然后你就明白许多。。