如何用javascript中的splat参数解析json对象?

时间:2013-10-30 04:16:47

标签: javascript json parsing splat

我试图用一个用户定义的函数函数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解析器从左到右开始,所以它可以推动它的发展。

请任何人,帮助!! 。我在便笺簿中测试了代码。

2 个答案:

答案 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>

我希望这会对你有所帮助。