js 遍历 json 对象数据
发布网友
发布时间:2022-04-24 09:40
我来回答
共3个回答
热心网友
时间:2022-04-23 00:33
你这里的jsonstr本身就已经是对象了,而json只是字符串,也就是说对方传递过来的字符串而已。
应该写成
var jsonStr = "{qiyi:'mp4',tudou:'3gp',youku:'mp4'}";
这样可以表示jsonStr是一个字符串,而现在要jsonStr去执行一下就可以了!
如:
var c = eval(jsonStr);
然后就可以调用了!如c.qiyi等等。不过这里不太好理解的,eval就是将jsonStr字符串当指令执行了,将执行结果传递给c而已。换一句方式可能会更好的理解的!
eval(" var c = "+jsonStr+";");
也就是说重新组合一个语句,这样可以直接使用c.qiyi了!
但其实是一样的道理的,只不过很少人会用到第二种!因为如果eval没有顺利执行时,第二种会出现错误,而第一种则会出现undefined的结果,第一种与第二种的区别就是不管是否空值,第一种c对象是存在的!而第二种却未必见得!第二种方案下,执行了一个语句,然后就感觉“凭空”开始使用一个对象了!然后这样虽是不好,其中是说明下边的语句都依赖于eval这样的一个细节语句,所以不是很多的!
也就是说:
var c = eval("{qiyi:'mp4',tudou:'3gp',youku:'mp4'}");
就是将json执行后的结果。由此可以看出你对数据传递上还有些不理解的!
热心网友
时间:2022-04-23 01:51
你说的是不是你有两个对象,这两个对象中有某些相同的key,你需要获得这两个对象中具有相同key的值??
如果是的话:
var obj = {}
var obj2 = {}
var videoType = "";
for (var i in obj1){
if (obj1[i] == obj2[i]){
videoType = obj1[i];
break;
}
}追问很感谢您的回答!
您说的方法很对!
我也尝试过了!
是很不错!
我也差不多是你这种思路!
但是!上面那位仁兄辛苦的回答那么长!
所以,最佳答案给他!非常感谢您
热心网友
时间:2022-04-23 03:26
var jsonStr={qiyi:'mp4',tudou:'3gp',youku:'mp4'}; //这样定义的话,就是json对象了,不必再eval
for(var c in jsonStr){ //遍历
alert(jsonStr[c])
}追问呵呵!
您说的方法我知道!也很好!
但是不是我想要的!
可能是我没讲清楚吧!我只所以要里面key!是因为我在另个对象中的数据有个对象的属性也有想对以的key
然后得到他们的共同的播放格式!
所以,我就纠结在这里
追答看不明白你要表达的意思