降低JSON中的键 - Node JS

时间:2016-11-08 13:15:27

标签: javascript json node.js mongodb

我想将json数组键名从大写字母更改为小写键,如下所示

[
    {
        "_id": "581f2749fb9b6f22308f5063",
        "WorkshopId": "1",
        "WorkshopTitle": "workshop1",
        "WorkshopPrice": "200",
        "WorkshopDescription": "workshop1 is a test workshop",
        "FloorNumber": "1",
        "RoomNumber": "205",
        "WorkshopLanguage": "english language",
        "LastOnlineRegistrationDate": "15/10/2016",
        "WorkshopDate": "1/11/2016",
        "WorkshopStartTime": "8:00 AM",
        "WorkshopEndTime": "11:00 AM",
        "WorkshopRules": "Rules will be mentioned here",
        "WorkshopCapacity": "200",
        "Speaker": {
            "SpeakerName": "John doe",
            "AboutSpeaker": "About the speaker"
        }
    },
    {
        "_id": "581f27e796915434f44cd678",
        "WorkshopId": "2",
        "WorkshopTitle": "workshop2",
        "WorkshopPrice": "200",
        "WorkshopDescription": "workshop2 is a test workshop",
        "FloorNumber": "1",
        "RoomNumber": "205",
        "WorkshopLanguage": "english language",
        "LastOnlineRegistrationDate": "15/10/2016",
        "WorkshopDate": "1/11/2016",
        "WorkshopStartTime": "11:00 AM",
        "WorkshopEndTime": "02:00 PM",
        "WorkshopRules": "Rules will be mentioned here",
        "WorkshopCapacity": "200",
        "Speaker": {
            "SpeakerName": "Jane doe",
            "AboutSpeaker": "Jane doe - About the speaker"
        }
    }
]

例如,WorkshopId必须更改为workshopid,我在节点js中有一个函数,用于在mongodb中查询集合并返回json:

getWorkshops: function (db, response) {
                db.collection('Workshops').find().toArray(function (err, results) {
                    var convertedArr = [];
                    //convert the json.
                    response.send(JSON.stringify(convertedArr));
        });

任何帮助?

2 个答案:

答案 0 :(得分:1)

这会将对象的键映射为小写:

var upperCased = [
    { ID: 1, NAME: 'Fred' },
  { ID: 2, NAME: 'Sarah' },
    { ID: 3, NAME: 'Joe' },
];


var lowerCased = upperCased.map(function(item) {
  var mapped = {};
  for (var key in item) {
    mapped[key.toLowerCase()] = item[key];
  }

  return mapped;
});

https://jsfiddle.net/5ouebw4b/2/

答案 1 :(得分:0)

您可以使用自定义toJSON()功能:

getWorkshops: function (db, response) {
    db.collection('Workshops').find().toArray(function (err, results) {
        results.toJSON = function () {
            var newArr = [];
            for (var obj in this) {
                if (!this.hasOwnProperty(obj) || 'toJSON' === obj) continue;

                var newObj = {};
                for (var prop in this[obj]) {
                    if (!this[obj].hasOwnProperty(prop)) continue;

                    newObj[prop.toLowerCase()] = this[obj][prop];
                }

                newArr.push(newObj);
            }

            return newArr;
        };

        response.send(JSON.stringify(results));
    });
}