如何删除不需要的键和键值

4


这是我从CouchDB数据库中获取的原始JSON对象:

 {
  "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"
          ]
      }
    }
  ]
}

我想让它看起来像下面的JSON对象:

[
    {
        "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"
          ]
        }
    }
]

这是我到目前为止得到的内容:
[
    {
        "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"
              ]
            }
        }
    }
]

这是我使用的 NodeJS 代码来实现这个功能:

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! ************');

我在 CouchDB 中使用标准视图:

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

有人能告诉我如何从我的JSON对象中去掉'value'键吗?

3个回答

8
你可以使用 Array.map() 将每个项目映射为所需内容,而不是删除不需要的内容:
var output = json_data.rows.map(function(item) {
    return {
        Room_number: item.value.Room_number,
        Location: item.value.Location,
        Timetable: item.value.Timetable
    }
});

这应该是关于函数式编程的一个被接受的答案,它明显优于传统的循环,因为它简洁易读,性能方面的损失可以忽略不计。 - aeruhxi

3
你可以这样做:

您可以像这样做

var json_data = doc;
json_data = json_data.rows;
var output=[];

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

response.send(output);

3
我认为这样做就可以了:
response.send (json_data.map (function (v) { return v.value; }));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接