我有一个.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的其余元素,并将它们包含在我的输出中
答案 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
文件中数组的项目。