我想从数组创建多个 JSON 文件。
数组:
[{
"Reference": "Registration",
"langkey": "REG_LBL",
"English": "Company Registration",
"Japanese": "会社登録"
}, {
"Reference": "Registration",
"langkey": "INFO_LBL",
"English": "Company Information",
"Japanese": "会社情報"
}]
我需要从上面的数组创建两个名为英语和日语的 JSON 文件(它将是动态的)。
所需输出
English.json
{
'INFO_LBL' : 'Company Information',
'REG_LBL':'Company Registration'
}
日语.json
{
'INFO_LBL' : '会社情報',
'REG_LBL':'会社情報'
}
代码
for (var i = 0; i < data.length; i++) {
var obj = data[i];
for (var key in obj) {
if (key !=='Reference' && key !== 'langkey' ) {
//{'REG_LBL':'Company Registration'}
objects[obj['langkey']] = obj[key];
fs.writeFileSync('lang/' + langkey + '.json', JSON.stringify(objects, null, 2), { encoding: 'utf8' }, function (err) {
if (err)
{ throw err; }
console.log("completed")
});
}
}
}
我可以创建两个 JSON 文件,但内容被另一个文件覆盖。请帮助解决此问题?
最佳答案
var finalObject = {};//create new object
data.forEach(v => {
var langkey = v.langkey;
Object.keys(v).forEach(val => {
if (val != 'langkey' && val != 'Reference') {
if (finalObject[val]) {//find if language object is already created.If already created insert in it else create new
let data = {};
data[langkey] = v[val]
finalObject[val] = Object.assign(finalObject[val], data)
} else {
finalObject[val] = {};
finalObject[val][langkey] = v[val];
}
}
})
})
Object.keys(finalObject).forEach(key => {
fs.writeFileSync(path.join(__dirname, `/lang/${key}.json`), JSON.stringify(finalObject[key], null, 2), (err) => {
if (err)
{ throw err; }
console.log('completed');
});
})
关于javascript - 从数组动态创建Json文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42220867/