javascript - 从数组动态创建Json文件

标签 javascript arrays json node.js

我想从数组创建多个 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/

相关文章:

javascript - $(document).off ('.data-api' ) 是否有 "on"等效项?

javascript - 如何根据值的金额更改值的颜色?

javascript - react 路由器参数化路由 : SyntaxError: expected expression, 得到 '<'

java - java中的2个数组的联合?

arrays - Swift 3 - 使用数组中的值按字典值过滤和排序字典数组

arrays - 数组中最后 k 个值的最大值,优于 O(n^2)

javascript - 为什么我第二次尝试将菜单拖到新项目时会跳转?

json - 从云函数获取随机wiki页面

javascript - 在ajax成功函数中解析JSON

java - 使用 Jackson 创建平面对象形式的嵌套 json