循环通过.json对象

时间:2016-07-27 16:48:07

标签: javascript json node.js loops for-loop

我有一个.JSON文件,其中包含类似这样的数据:

obstacle.physicsBody = SKPhysicsBody(texture: shape.texture!, size: shape.size)

我写了一个脚本,将这些数据转换为一个对象,这是我的脚本:

[
{
    "scan_type": "nexpose",
    "date_time": "2016-07-18 18:21:44",
    "source_address": "1111",
    "source_lat": "22.555260",
    "source_lng": "-15.084420",
},   
...
]

如您所见,目前我将所有内容都设置为我的数据文件中的第一个元素[0]进行测试。但我需要将其更改为循环每个元素的位置。

通常我只使用foreach循环,但这不成功。

如何添加一个循环来遍历每个.JSON对象并将值添加到我的脚本中,以便我的输出文件将包含所有新格式化的数据?

为了澄清,我希望将结果作为结果写入一个文件输出中。

另外:我当前的代码工作正常,但只针对第一个元素[0],我只需要找到一种方法来循环来自.JSON的其余元素,并将它们包含在我的输出中

1 个答案:

答案 0 :(得分:1)

正如我在评论中所述,尝试使用箭头功能forEach。像这样:

let obj = require('./dataOut.json');
var fs = require('fs');

const source = [];

obj.forEach(o => {
  //json variables
  const scan_type = o.scan_type;
  const date_time = o.date_time;
  const source_address = o.source_address;
  const source_lat = o.source_lat;
  const source_lng = o.source_lng;

  //source contains the new object
  source.push({
    id: source_lat + source_lng,
    "source-lat": source_lat,
    "source-lng": source_lng,
    "source_address": source_address,
    x: {
      valueOf: function () {
        var latlng = [
          source_lat,
          source_lng
        ];
        var xy = map.FUNCTION_FOR_CONVERTING_LAT_LNG_TO_X_Y(latlng);
        return xy[0];
      }
    },
    y: {
      valueOf: function () {
        var latlng = [
          source_lat,
          source_lng
        ];
        var xy = map.FUNCTION_FOR_CONVERTING_LAT_LNG_TO_X_Y(latlng);
        return xy[1];
      }
    }
  });
});

//write out to file and stringify
fs.writeFile('./parentSource.json', JSON.stringify(source, null, 2), 'utf-8');

每次迭代时,o将是./dataOut.json文件中数组的项目。