2017-11-13 6 views
0

私は書いているディスカードのチャットボットにDestiny 2 APIを使用しようとしています。今は、APIで指定されたアドレスにリクエストを送信して、自分のプレーヤーIDを返すだけです。私は正常にこれを行うことができますが、私は必要以上の情報を返します。どうすれば 'membershipId'を返すことができますか?http://リクエストから特定のデータのみを返すnode.js

この要求リターンのボディ:

{ 
    "Response": [ 
     { 
      "membershipType": 4, 
      "membershipId": "4611686018470641209", 
      "displayName": "LazyBrain#2918" 
     } 
    ], 
    "ErrorCode": 1, 
    "ThrottleSeconds": 0, 
    "ErrorStatus": "Success", 
    "Message": "Ok", 
    "MessageData": {} 
} 

コード:

case 'stats': 
    let options = { 
     url: HOST + '/SearchDestinyPlayer/4/LazyBrain%232918/', 
     headers: { 
      'X-API-Key': config.key 
     } 
    }; 

    request(options, function (err, res, body) { 
     let json = JSON.stringify(JSON.parse(body)['Response']); 
     console.log(json); 
    }); 

しかし、私はそれを絞られている上記のコードで:

[ 
    { 
     "membershipType": 4, 
     "membershipId": "4611686018470641209", 
     "displayName": "LazyBrain#2918" 
    } 
] 

私はありません私はこれについて正しい方向に行っている場合は完全に確信しています。

+1

uは、会員IDが必要な場合は、単に 'JSON [0] [「membershipId」]' – kgangadhar

答えて

0

あなたはこのようにそれを得ることができ、事前にJSONにstringifyを使用するか、または使用していないように見えます:

var raw = JSON.parse(body); 
var membershipID = raw.Response[0].membershipId; 
他のJSONデータを気にせず

/キー

例:

var body = '{"Response":[{"membershipType":4,"membershipId":"4611686018470641209","displayName":"LazyBrain#2918"}],"ErrorCode":1,"ThrottleSeconds":0,"ErrorStatus":"Success","Message":"Ok","MessageData":{}}'; 
 

 
var raw = JSON.parse(body); 
 
var membershipID = raw.Response[0].membershipId; 
 

 
console.log(membershipID);

+0

ありがとうございます!それは完璧に働いた。 – Lazy

0

body-parserを使用し、ドット表記を使用してmembershipIdにアクセスしてください。例えば

req.body.membershipId 

上記あなたがGET要求に与えられるべきでリクエストオブジェクトを必要とする、試す最​​初の仕事はほとんどありませんので、私はあなたのコードの全体が不明です。

あなたの質問に基づいて、あなたは、アレイ内のmembershipIdを持っているので、json[0].membershipIdを使用していますが、JSON.parse(body)["Response"][0].membershipId

+0

以上の罰金働いたとして、これが働いてきたならば全くわからない私が使用していない身体を行います-parser before。しかし、クイックレスポンスはまったく同じでありがとう。 – Lazy

関連する問題