我javascript的json里存放一个list数组,例如var json=[{"id":1,"name":"张三"},{"id":2,"name":"李四"}],一般要取就要写成for循环,然后json[i].id的方式来取,现在我想我也不知道json里有什么想用类似于list根据索引的取值方式来取值,这样行吗?怎么实现
[b]问题补充:[/b]
用了你们说的for(var i in josn)方法不行呀,我把json[i]的值打出来看,前两个出来了个什么function (filter){return JSON.stringify(this,filter);}的东西,第三个才是我要的值,而且我的意思是我也不知道list里的键的名字,要完全动态获取
[b]问题补充:[/b]
for(var i in data){
for(var j in data[i]){
alert(data[i][j]);
}
}
这个样子的
[b]问题补充:[/b]
用for(var i=0;i<data.length;i++)就没有问题
[b]问题补充:[/b]
每次都给我输出个
function (filter) {
return JSON.parse(this, filter);
}
[b]问题补充:[/b]
额,乱输出这个问题解决了,引用了json.js,注释了几行代码就好了,还有个问题想问下,我能不能获取json里的一个键,而不是值,或者是用类似于hashmap的取值方式data.get(key)来获取值而不是用data.key的方式来获取值
[b]问题补充:[/b]
还有个问题想请教下,关于json里数据的排列,是像list一样是按放入顺序来排列的还是按他自己内部的方式来排列的,比如我先放入id,然后放入name,结果name却排到前面去了,有没这个可能呀
我知道了,应该是你的js库有扩展object对象,增加了function (filter) {
return JSON.parse(this, filter);
} 方法
那你可以这样
for(var i in data){
for(var j in data[i]){
[color=red]if( typeof data[i][j] != "function")[/color]
alert(data[i][j]);
}
}
可以这么做
for(var i in json)
{
//i就是索引号,json[i]就是对应的值
}
语法:
for (变量 in 对象)
{
在此执行代码
}
“变量”用来指定变量,指定的变量可以是数组元素,也可以是对象的属性。
[code="java"]var json=[{"id":1,"name":"张三"},{"id":2,"name":"李四"}];
for(var i in json){
alert(json[i].id);
}
[/code]
把你的代码粘出来看,
我刚才用下面这个代码测了一下,弹出没问题啊
[code="java"]function pp(){
var data =[{"id":1,"name":"张三"},{"id":2,"name":"李四"}];
for(var i in data){
for(var j in data[i]){
alert(data[i][j]);
}
}
}[/code]
json它本身也就是js对象,和一些的js对象没多大差别,
1.JSON是对象直接用obj.property就行了.
2.至于JSON数据排列,我觉得应该是像LIST方式排列,
[quote]我先放入id,然后放入name,结果name却排到前面去了,有没这个可能呀[/quote]
这个我觉得应该不可能吧,这就有点类似于栈了,JSON应该不是这样