在for循环解析json中对每个键进行递归函数调用

时间:2017-07-20 14:59:17

标签: javascript json parsing

假设我有一个看起来像

的json对象
"bounds":{
    "coordinatetop":{
       "x":143,
       "y":544
    },
    "coordinatebottom":{
       "x":140,
       "y":510
    }
}

我正在尝试使用此代码解析当前的JSON,其中数据是json数据,而target只是标记ID。

$.each(data, function(index, value) {
    if (typeof(value) == 'object') {
      processBounds(value, target);
    } else {
      console.log(value);
    }
});

当我遍历这个时,函数调用取值坐标和目标,然后是x和y的值143和544.但是,这个函数的循环不够远,无法获得coordinatebottom的值。 / p>

为实现这一目标,还有哪些其他实施方式?感谢

1 个答案:

答案 0 :(得分:0)

实际上你并不是递归地调用函数,你只是绑定一个调用processBounds()函数的回调函数。

您需要单独声明processBounds函数,然后在.each回调中绑定它:

var processBounds = function(index, value) {
  if (typeof(value) == 'object') {
    processBounds(value, target);
  } else {
    console.log(value);
  }
}

$.each(data, processBounds);

修改

$.each(data.bounds, processBounds);