2013-09-24 5 views
0

J'ai une chaîne JSON qui ressemble à ceci:Node.js JSON analyse syntaxique

{ 
    "resultType" : "history", 
    "currentTime" : "2011-10-22T15:46:00+00:00", 
    "columns" : ["date","orders","quantity","low","high","average"], 
    "rowsets" : [ 
    { 
     "generatedAt" : "2011-10-22T15:42:00+00:00", 
     "rows" : [ 
     ["2011-12-03T00:00:00+00:00",40,40,1999,499999.99,35223.50], 
     ["2011-12-02T00:00:00+00:00",83,252,9999,11550,11550] 
     ] 
    } 
    ] 
} 

Chaque fois que je tente de l'analyser, j'utiliser le code comme ceci:

var data = JSON.parse(json); 
console.log(data); 

par ce qui suit ce qui est imprimé à la console:

{ 
    "resultType" : "history", 
    "currentTime" : "2011-10-22T15:46:00+00:00", 
    "columns" : ["date","orders","quantity","low","high","average"], 
    "rowsets" : [ 
    { 
     "generatedAt" : "2011-10-22T15:42:00+00:00", 
     "rows" : [Object] 
    } 
    ] 
} 

J'ai essayé deux ou trois choses, mais comment puis-je obtenir les données dans le domaine rows? Après analyse, la console affiche simplement [Object].

Répondre

9

La sortie que vous voyez est la façon dont elle est affichée. Si vous accédez à data.rowsets[0].rows, vous pouvez constater que le JSON a effectivement été analysé avec succès. Vous pouvez également utiliser util.inspect() lors de la spécification de la propriété depth pour indiquer à Node.js de se recréer plus en profondeur lors du formatage de l'objet.

Voici un exemple en utilisant util.inspect():

var data = JSON.parse(json); 
// a null depth means to recurse indefinitely 
console.log(util.inspect(data, { depth: null })); 
+0

Vous y accèderiez en utilisant 'data.rowsets [0] .rows'. 'rowsets' est un tableau. – Rowno

+0

cela, avec les parenthèses de tableau, a fait l'affaire. Merci! – user637980

0

ont testé votre code. C'est bien.

var a = { 
     "resultType" : "history", 
     "currentTime" : "2011-10-22T15:46:00+00:00", 
     "columns" : ["date","orders","quantity","low","high","average"], 
     "rowsets" : [ 
     { 
      "generatedAt" : "2011-10-22T15:42:00+00:00", 
      "rows" : [ 
      ["2011-12-03T00:00:00+00:00",40,40,1999,499999.99,35223.50], 
      ["2011-12-02T00:00:00+00:00",83,252,9999,11550,11550] 
      ] 
     } 
     ] 
    } 

    var util = require('util'); 

    console.log(util.inspect(a.rowsets[0].rows, { showHidden: true, depth: null }));