js 遍历 json 对象数据
一个例子varjsonStr={qiyi:'mp4',tudou:'3gp',youku:'mp4'}里面有属性qiyi,tudou,youku在js中这样解析!varc...
一个例子
var jsonStr={qiyi:'mp4',tudou:'3gp',youku:'mp4'}
里面有属性qiyi,tudou,youku
在js中这样解析!
var c = eval('(' + jsonStr + ')');
但是.我想c.qiyi c.tudou
然后得到相对应的播放格式!
不知道怎么去做!不知道哪位高手能帮忙下!
非常谢谢 展开
var jsonStr={qiyi:'mp4',tudou:'3gp',youku:'mp4'}
里面有属性qiyi,tudou,youku
在js中这样解析!
var c = eval('(' + jsonStr + ')');
但是.我想c.qiyi c.tudou
然后得到相对应的播放格式!
不知道怎么去做!不知道哪位高手能帮忙下!
非常谢谢 展开
3个回答
展开全部
你这里的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执行后的结果。由此可以看出你对数据传递上还有些不理解的!
应该写成
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执行后的结果。由此可以看出你对数据传递上还有些不理解的!
更多追问追答
追问
这个,其实您也说的很对!
所以说,我在这方面弱,所以想问下!
但是,有点不理解
var c = eval("{qiyi:'mp4',tudou:'3gp',youku:'mp4'}");
就是将json执行后的结果。由此可以看出你对数据传递上还有些不理解的!
你这样给我的明显格式不对,不可以得到任何数据!
是不是还有别的方法啊
追答
引号中的内容就是json传递过来的文本,怎么格式不对?引号内是要你自已获得的json文本。怎么得不到数据呢?
展开全部
你说的是不是你有两个对象,这两个对象中有某些相同的key,你需要获得这两个对象中具有相同key的值??
如果是的话:
var obj = {}
var obj2 = {}
var videoType = "";
for (var i in obj1){
if (obj1[i] == obj2[i]){
videoType = obj1[i];
break;
}
}
如果是的话:
var obj = {}
var obj2 = {}
var videoType = "";
for (var i in obj1){
if (obj1[i] == obj2[i]){
videoType = obj1[i];
break;
}
}
追问
很感谢您的回答!
您说的方法很对!
我也尝试过了!
是很不错!
我也差不多是你这种思路!
但是!上面那位仁兄辛苦的回答那么长!
所以,最佳答案给他!非常感谢您
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var jsonStr={qiyi:'mp4',tudou:'3gp',youku:'mp4'}; //这样定义的话,就是json对象了,不必再eval
for(var c in jsonStr){ //遍历
alert(jsonStr[c])
}
for(var c in jsonStr){ //遍历
alert(jsonStr[c])
}
追问
呵呵!
您说的方法我知道!也很好!
但是不是我想要的!
可能是我没讲清楚吧!我只所以要里面key!是因为我在另个对象中的数据有个对象的属性也有想对以的key
然后得到他们的共同的播放格式!
所以,我就纠结在这里
追答
看不明白你要表达的意思
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询