我正在尝试在我编写的不和谐聊天机器人中使用Destiny 2 API。现在我只想让它通过向API中指定的地址发送请求来返回我的玩家ID。我可以成功地做到这一点,但它返回的信息比我需要的多。我如何才能返回'membershipId'?
此请求的正文返回:
{
"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"
}
]
我不完全确定我是否会采用正确的方法。
答案 0 :(得分:0)
使用body-parser并使用点表示法访问membershipId。
例如:
req.body.membershipId
我不确定你的全部代码,所以上面的代码不太可能首先尝试,你需要一个应该在GET请求上给出的请求对象。
根据您的问题,您似乎在数组中包含membershipId,因此请使用json[0].membershipId
但不要事先在json上使用stringify
,或使用JSON.parse(body)["Response"][0].membershipId
答案 1 :(得分:0)
你可以这样:
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);