2016-11-03 23 views
1

私は初心者で、javascriptを学んでいて、json配列を解析することはありませんでした。私は、JSONの上から、ユーザ名とその値を取得する必要があり、私も道nodejsのjson応答を解析する

for (var i=0; i<response['credentials'].length; i++){ 
     console.log("got res " +response['credentials'][i]); 
    } 

を以下のデータを取得しようとしました、

 //using following middle-ware as well 
    let app = express(); 
    const collectioName = "credentials"; 
    app.use(bodyParser.json()); 
    app.use(express.static(__dirname + '/public')); 

    //i get 'result' from one of query from mongodb 
    let response = JSON.parse(result); 
    console.log("got res " +response.credentials); 

を、私は、次の試した文字列

[{"_id":"5810abfec95a8743ec237fab","credentials":[{"_id":"5810abfec95a8743ec237fab","username":"sam"}]}] 

を以下しています応答。 このようなjsonレスポンスからデータを取得する正しい方法は何かを知りたい。

+1

JSONは配列なので、おそらくすべてのアクセスは 'response [0] .credentials'で始まります。 – Sirko

+0

私は 'response [0] .credentials'を試してみたとき、' [object Object] 'として出力しました。 – Sohan

+0

これは配列ですから、基本的に同じ方法でアクセスする必要があります。 – Sirko

答えて

1

を提案してください、これを試してください:ここでは

var data=response[0].credentials; 
for (var i=0; i<data.length; i++){ 
    console.log(data[i]._id); 
    console.log(data[i].username); 
} 

は、上記の解答を見た後、私はいくつかの手掛かりを持って、私はこれが同様に動作するはずだと思う、これは時間を節約jsfiddle

+0

これは機能するので、これはデータにアクセスする最も効率的な方法ですか? – Sohan

+0

@ Sohan、はい、私たちは 'credentials'という配列を持っているので、それを反復する必要があります。 –

+0

が理解しました、ありがとう! – Sohan

1

ですデータ構造としての私の繰り返しは、同じ資格情報がDB内に存在しないため、それぞれの資格情報の一致に対して1つのjsonオブジェクトのみを返します。

let response = JSON.parse(result); 
    var data=response[0].credentials; 
    let username = data[0].username; 
    let password = data[0].password; 
    console.log("username : " +username + "password : " +password); 
+0

はい、1人のユーザーしかいない場合、反復する必要はありません。 –

+0

もっと簡単な方法はhttps://jsfiddle.net/j7ya1L97/3/です。配列なしでjsonを返す必要があります。 –

+0

nodejsでこれは動作していないようです – Sohan