1

我正在尝试使用带有 splat 参数的用户定义函数 function func (obj /*, args /) {...} 解析 json 对象。我被这段代码困住了。

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');

输出是 --> 带有 Tintin 的警报弹出窗口,后跟错误

/*
Exception: pobj.star_args is undefined
func@Scratchpad/1:10
@Scratchpad/1:18
*/

所以,我的问题是如何访问这个 json 对象元素

pobj.star_args[i]

我知道 Javascript 解析器是从左到右开始的,所以它会引发一个 exveption。

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

4

2 回答 2

2

换行试试

alert(pobj.star_args[i]);

alert(star_args[i]);

解释:star_args是局部变量;它不是pobj对象的一部分。因此,您只需直接引用它即可。

于 2013-10-30T04:18:28.140 回答
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>

我希望这能帮到您。

于 2013-10-30T04:42:28.800 回答