Analyse de tableau JSON nodejs

je suis donc l'apprentissage de NodeJS et javascript en général, et de jouer un peu avec elle et j'ai quelques problèmes de l'analyse d'un JSON. J'ai le message suivant de l'utilisateur":

{
  "sync_contact_list": [
    {
      "name": "c",
      "number": "789",
      "email": ""
    },
    {
      "name": "b",
      "number": "123",
      "email": "[email protected]"
    },
    {
      "name": "a",
      "number": "416",
      "email": ""
    }
  ]
}

Ma question est comment puis-je analyser correctement ce pour obtenir les bits individuels:

{
  "name": "a",
  "number": "416",
  "email": ""
}

J'ai essayé de le faire en faisant var jsonObject = JSON.parse(req.corps); ,mais je continue à recevoir des erreurs d'analyse, peu importe comment je modifie le JSON que je reçois (composants individuels, tout ça, etc).

Quelqu'un pourrait-il un point de ce que je fais de mal?

EDIT:
J'ai donc utiliser express pour traiter les différents chemins. J'ai donc app.js:

var express = require('express')
, routes = require('./routes')
//var mysql = require('mysql');
var app = module.exports = express.createServer();
//Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
//app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});
app.configure('production', function(){
app.use(express.errorHandler());  
});
//Routes
//app.post('/', routes.syncServiceIndex);
app.post('/syncService', routes.synchServicePost);
app.get('/syncService/:syncServiceUser/sync', routes.synchServiceSync);
app.post('/syncService/:syncServiceUser/push', routes.synchServicePush);
app.del('/syncService/:syncServiceUser', routes.synchServiceDel);
app.post('/syncService/:syncServiceUser/contacts/push', routes.synchServiceContactsPush);
app.get('/syncService/:syncServiceUser/contacts/sync', routes.synchServiceContactsSync);
app.post('/syncService/:syncServiceUser/contacts/', routes.synchServiceContactsPost);
app.get('/syncService/:syncServiceUser/contacts/:contactId', routes.synchServiceContactsGet);
app.put('/syncService/:syncServiceUser/contacts/:contactId', routes.synchServiceContactsPut);
app.del('/syncService/:syncServiceUser/contacts/:contactId', routes.synchServiceContactsDel);
app.listen(3000);
console.log("Express server listening on port %d in %s mode", app.address().port, app.settings.env);

Et puis j'ai index.js, où j'ai pratiquement la suite, pour chaque itinéraire.

exports.synchServicePost = function(req, res) {
console.log('synchServicePost');
console.log("BODY:"+JSON.stringify(req.body));
var jsonObject = JSON.parse(req.body);
res.statusCode = 200;
res.send("OK\n");
}

La demande est faite avec une ligne de gratuit JSON:

curl -i -d "{'sync_contact_list':[{'name':'c','number':'789','email':''},{'name':'b','number':'123','email':'[email protected]'},{'name':'a','number':'416','email':''}]}"  http://localhost:3000/syncService

EDIT: j'ai réalisé que je devrais sans doute changer le Type de Contenu application/json. dans ce cas, JSON.stringify je reçois le texte suivant:

SyntaxError: Unexpected token ILLEGAL
at parse (native)
at IncomingMessage.<anonymous> (/home/alex/peekcode/quipmail/synch/node_modules/express/node_modules/connect/lib/middleware/bodyParser.js:71:15)
at IncomingMessage.emit (events.js:61:17)
at HTTPParser.onMessageComplete (http.js:133:23)
at Socket.ondata (http.js:1029:22)
at Socket._onReadable (net.js:677:27)
at IOWatcher.onReadable [as callback] (net.js:177:10)
  • Que fait l'erreur d'analyse syntaxique dire? Vous ne devez analyser la réponse complète, et puis il suffit d'accès de résultat.sync_contact_list[0] pour le premier résultat.
  • Essayez avec un saut de ligne-/spacefree json. Cela fonctionne?
  • peut-être droit. Les données de l'utilisateur exactement dans le format que vous avez fourni? Ou vous venez de mise en forme pour la StackOverflow? Je suppose que vous nous montrent que la structure de données que vous souhaitez recevoir, mais nous devrions être tenu de la req.body valeur avec son type (essayez d'appeler typeof req.body et nous donner le résultat).
  • req.corps= {"{'sync_contact_list':":{"{'name':'c','number':'789','email':"},{'name':'b','number':'123','email':'[email protected]'},{'name':'a','number':'416','email':"}]":""}}
  • Vous utilisez invalid JSON.
  • ...vous avez besoin de guillemets autour des noms de propriété et de cordes. '{"sync_contact_list":[{"name":"c","number":"789","email":""},{"name":"b","number":"123","email":"[email protected]"},{"name":"a","number":"416","email":""}]}'
  • À partir de ce que l'on peut voir (à la recherche de votre commentaire) votre req.body: 1) n'est pas une chaîne, 2) n'est pas valide. Mais probablement que nous assistons à quelque chose d'autre que vous avez écrit (en raison de StackOverflow afficher différemment). C'est pourquoi je vous ai demandé également sur le résultat de l' typeof req.body - qui nous permettra de savoir quelque chose de plus sur ce req.body est vraiment.
  • est droit. Je ne peux pas croire que je n'ai pas remarqué. J'ai été en utilisant en ligne JSON viewer afin de détecter toute msising des virgules, et pour quelque raison il accepter mes chaînes JSON avec le " et " inversé et j'ai payé aucun autre avis. Cependant, lorsque j'essaie de l'analyser, j'obtiens un "jeton Inattendu ILLÉGALE"

InformationsquelleAutor Alex B | 2011-12-09