我试图用一个用户定义的函数函数func(obj / *, args /){...}解析一个json对象,该函数采用splat参数。我被这个代码搞定了。
function func (obj /*, *args*/) {
pobj= JSON.parse(obj)
var star_args = Array.prototype.slice.call (arguments, func.length);
alert(pobj.name);
//outputs name Tintin
for (i=0;i<star_args.length;i++){
alert(pobj.star_args[i]);
}
}
var json = '{"name":"Tintin","addr":"Kausaltar"}'
//function call with a json object
func(json,'name','addr');
输出是 - &GT;警告弹出与丁丁 然后是错误
/*
Exception: pobj.star_args is undefined
func@Scratchpad/1:10
@Scratchpad/1:18
*/
所以,我的问题是如何使用
访问这个json对象元素pobj.star_args[i]
我知道Javascript解析器从左到右开始,所以它可以推动它的发展。
请任何人,帮助!! 。我在便笺簿中测试了代码。
答案 0 :(得分:2)
尝试更改行
alert(pobj.star_args[i]);
到
alert(star_args[i]);
说明:star_args
是一个局部变量;它不是pobj
对象的一部分。所以你直接引用它。
答案 1 :(得分:0)
使用以下代码@zerOnepal,它将为您效劳。
<script>
function func (obj /*, *args*/) {
pobj= JSON.parse(obj);
var star_args = Array.prototype.slice.call (arguments, func.length);
alert(pobj.name);
//outputs name Tintin
for(var k in pobj)
if ({}.hasOwnProperty.call(pobj, k))
alert(k + " = "+ pobj[k]); // k -> key and pobj[k] -> value
}
var json = '{"name":"Tintin","addr":"Kausaltar"}'
//function call with a json object
func(json,'name','addr');
</script>
我希望这会对你有所帮助。