node.js仅返回http请求中的特定数据

时间:2017-11-13 14:02:49

标签: javascript node.js string http request

我正在尝试在我编写的不和谐聊天机器人中使用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"
    }
]

我不完全确定我是否会采用正确的方法。

2 个答案:

答案 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);