2013-05-22 6 views
3


Voici JSON objet que je suis extraire de mon CouchDB base de données originale:Comment supprimer les clés non désirées et les valeurs clés

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

Je veux la faire ressembler à l'objet JSON ci-dessous:

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

Voici ce que j'ai jusqu'à présent:

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

Voici un NodeJS code que je utilise pour y parvenir:

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

J'utilise la vue standard dans le CouchDB:

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

Quelqu'un peut-il me dire comment se débarrasser de la clé 'value' dans mon objet JSON?

Répondre

2

Vous pouvez faire comme ce

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); 
+0

Oui, ça marche pour moi! Merci beaucoup!!! –

5

Vous pouvez mapper chaque élément comme celui-ci en utilisant Array.map(), en gardant ce que vous voulez au lieu de supprimer ce que vous ne voulez pas:

var output = json_data.rows.map(function(item) { 
    return { 
     Room_number: item.value.Room_number, 
     Location: item.value.Location, 
     Timetable: item.value.Timetable 
    } 
}); 
+0

Cela devrait être une réponse acceptée pour l'utilisation de la programmation fonctionnelle, qui est clairement supérieure à la boucle traditionnelle en raison de sa concision et sa lisibilité avec un compromis négligeable pour la performance. – absolutezero

3

Je pense cela va le faire:

response.send (json_data.map (function (v) { return v.value; })); 
Questions connexes