Здравствуй, о ЛОР!
Вот у меня есть такой data.json, который и не JSON вовсе:
var data = [
{key: "0:0:0:1", val: 25},
{key: "0:0:0:2", val: 1},
{key: "0:0:0:3:0", val: "n/a"},
{key: "0:0:0:3:1", val: "n/a"},
{key: "0:0:0:4", val: 0},
{key: "0:0:0:5", val: 0}
];
Еще у меня есть вот такой map.json, в который мне надо подставить val с data.json вместо «0:0:0:smth»:
{
"id": "0:0:0:1",
"type": "0:0:0:2",
"coords": {
"latitude": "0:0:0:3:0",
"longitude": "0:0:0:3:1"
},
"unixtime": "0:0:0:4",
"uptime": "0:0:0:5"
}
И вот такую штуку мне надо получить:
{
"id":25,
"type":1,
"coords": {
"latitude":"n/a",
"longitude":"n/a"
},
"unixtime":0,
"uptime":0
}
Предположим, что я распарсил этот data.json, распарсил map.json (не правильно, как выяснилось), подставил в этот map.json все, кроме значений в объект coords, ибо не знаю, как, блин, сделать это. Вот программулина, которая получилась у меня:
var fs = require('fs');
var map = {};
var json = {};
var data = function(data, map) {
fs.readFile(data, function(err, data) {
if(err) throw err;
var evaluated = eval(data+";data");
evaluated.forEach(function(object) {
fs.readFile(map, function(err, map) {
if (err) throw err;
map = JSON.parse(map, function(key, value) {
if(object.key === value) {
console.log(key + " " + object.val);
json[key] = object.val;
return(key + " " + object.val);
}
});
console.log(json);
});
});
});
};
data('data.json', 'map.json');
Это нечто выводит мне в терминал:
id 25
{ id: 25 }
uptime 0
{ id: 25, uptime: 0 }
longitude n/a
{ id: 25, uptime: 0, longitude: 'n/a' }
type 1
{ id: 25, uptime: 0, longitude: 'n/a', type: 1 }
latitude n/a
{ id: 25, uptime: 0, longitude: 'n/a', type: 1, latitude: 'n/a' }
unixtime 0
{ id: 25,
uptime: 0,
longitude: 'n/a',
type: 1,
latitude: 'n/a',
unixtime: 0 }
Помогите, пожалуйста, понять мне, как заставить node.js вывести мне правильный JSON, который мне так нужен.