微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在nodeJS中的JSON中操作值

如何解决在nodeJS中的JSON中操作值

我是Nodejs和JSON操作的新手。我有一个看起来像

的jSON
"ent": [
        {
            "employee": [
                {
                    "emp_name": "","column": "employee","emp_id": 123456,"first name": "Joe","last name": "Bloggs","email": "","ldapid":
                },{
                    "emp_name": "","first name": "Foo","last name": "Bars","ldapid":
                }
                
            ]
        }
        
        ]

我需要根据名字和姓氏填写电子邮件,ldapid和emp_name

所需的输出

"ent": [
        {
            "employee": [
                {
                    "emp_name": "Joe Bloggs","email": "jbloggs@mycompemail.com","ldapid": "jbloggs"
                },{
                    "emp_name": "Foo Bars","emp_id": 567891,"email": "fbars@mycompemail.com","ldapid": "fbars"
                }
                
            ]
        }
        
        ]

由于我是nodeJS领域的超级新手,所以我正在采取一些初步步骤来达到自己想要的位置。

以下是我的工作。

编辑了我的帖子

大家好,谢谢您的答复。 我希望得到的答案与以下内容类似。这可能不是具有最佳实践的代码,但是我想做的可能是该小组中的专家可以使它变得更好。

const fs = require('fs');

/** Method to start  
 * 
 *  
 */
const main = async () => {

    const myJSONObject = require('./people.json');
    try {
        for (var i = 0; i < myJSONObject.entities.length; i++) {
            var entity = myJSONObject.entities[i];

            if (entity.People) {
                for (var j = 0; j < entity.People.length; j++) {
                    var people = entity.People[j];
                    var fn = people["first name"];
                    var ln = people["last name"];
                    var email = `${fn.substring(0,3)}${ln.substring(0,5)}@mycompmail.com`;
                    var ldapid = `${fn.substring(0,5)}`;

                
                    myJSONObject.entities[i].People[j]["email"] = email.toLowerCase();
                    myJSONObject.entities[i].People[j]["ldap id"] = ldapid.toLowerCase();
                    myJSONObject.entities[i].People[j]["preferred first name"] = fn;
                    myJSONObject.entities[i].People[j]["preferred last name"] = ln;
                   
                    //  console.log(`${fn}.${ln}`)

                }

            }

        }
        fs.writeFileSync('./new_people.json',JSON.stringify(myJSONObject,4));
    }
    catch (error) {
        console.log(error);
    }

};

(async () => {
    await main();
})();

在此方面的任何帮助都将受到高度赞赏。 瓦基恰克

解决方法

根据您的代码片段,我认为JSON是文件中的字符串。

因此,您需要做的第一步是将文件内容导入到变量中。您可以使用fs.readFileSync()来做到这一点。现在,您将字符串包含在变量中。

接下来,您需要将字符串转换为对象。您可以使用JSON.parse()来做到这一点。现在,您有了可以操作的对象。

要将对象写回到文件中,可以使用def format_row(r): formats = r['format'].split(';') return ['background-color: yellow' if y=='y' else '' for y in formats] + [''] df.style.apply(format_row,axis=1) 再次使其成为字符串,然后使用JSON.stringify()将其写到文件中。

完整脚本:

fs.writeFileSync()

注意:还有用于写入和读取文件的异步功能。如果您在脚本的开头加载配置或类似内容,则同步功能就可以了。如果在运行时读取/写入许多文件,则应使用异步功能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。