Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to remove unwanted keys and key values


Here is the original JSON object I am retrieving from my CouchDB database:

 {
  "total_rows": 3,
  "offset": 0,
  "rows": [
    {
      "id": "1e8fe199d4e761b71bb8920eb3003db2",
      "key": null,
      "value": {
        "_id": "1e8fe199d4e761b71bb8920eb3003db2",
        "_rev": "3-6979e0cd646f2bc0ddf84c0664d25808",
        "Room_number": 99,
        "Location": "City campus",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
        }
      }
    },
    {
      "id": "1e8fe199d4e761b71bb8920eb3004cc6",
      "key": null,
      "value": {
        "_id": "1e8fe199d4e761b71bb8920eb3004cc6",
        "_rev": "2-f7250cca62a804137174a20f48312c40",
        "Room_number": 12,
        "Location": "City hall",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
      }
    }
  ]
}

I want to make it look like the JSON object below:

[
    {
        "Room_number": 99,
        "Location": "City campus",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
        }
    },
    {
        "Room_number": 12,
        "Location": "City hall",
        "Timetable": {
          "Monday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Tuesday": [
            "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ],
          "Sunday": [
           "08:30",
            "10:00",
            "11:30",
            "13:30",
            "14:14"
          ]
        }
    }
]

Here is what I have got so far:

[
    {
        "value": {
            "Room_number": 99,
            "Location": "City campus",
            "Timetable": {
              "Monday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Tuesday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Sunday": [
               "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ]
            }
        }
    },
    {
        "value": {
            "Room_number": 12,
            "Location": "City hall",
            "Timetable": {
              "Monday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Tuesday": [
                "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ],
              "Sunday": [
               "08:30",
                "10:00",
                "11:30",
                "13:30",
                "14:14"
              ]
            }
        }
    }
]

Here is a NodeJS code I am using to achieve this:

var express = require('express')
   , db = require('nano')('http://localhost:5984/rooms_database')
   , app = express();

// query a view
db.view('show_rooms', 'view_show_rooms', function (err, doc)
{
    app.get("/", function(request,response)
    {
        var json_data = doc;
        json_data = json_data.rows;

        for (var i = 0; i < json_data.length; i++)
        {
            delete json_data[i].id;
            delete json_data[i].key;
            delete json_data[i].value._id;
            delete json_data[i].value._rev;
        }

        response.send(json_data);
    });
});

app.listen(8080);
console.log('************ Server is running! ************');

I am using standard view in the CouchDB:

function(doc)
{
    emit(null, doc);
}

Can anyone tell me how to get rid of the 'value' key in my JSON object?

like image 468
Cornel Trem Avatar asked Dec 08 '22 15:12

Cornel Trem


1 Answers

You could map each item like this using Array.map(), keeping what you want instead of removing what you don't want:

var output = json_data.rows.map(function(item) {
    return {
        Room_number: item.value.Room_number,
        Location: item.value.Location,
        Timetable: item.value.Timetable
    }
});
like image 144
Ja͢ck Avatar answered Dec 11 '22 08:12

Ja͢ck