首页 > 解决方案 > JSON 数据存在 Javascript 问题(Destiny 2 API)

问题描述

我一直在尝试使用 JSON 数据和 API 来围绕我的第一个合适的站点。我正在使用 Destiny 2 的 API——但我现在遇到了一些障碍。

我不知道如何循环,例如,membershipId每个Response.characters.data.(?).membershipId. 它(?)是动态的,取决于原始 API 请求,但我不确定如何循环它,因为它不在数组中。

 {
    "Response": {
        "characters": {
            "data": {
                "2305843009301086354": {
                    "membershipId": "4611686018467309748",
                    "membershipType": 4,
                    "characterId": "2305843009301086354",
                    "dateLastPlayed": "2018-08-27T19:22:17Z",
                    "minutesPlayedThisSession": "166",
                    "minutesPlayedTotal": "1251",
                    "light": 300
                },
                "2305843009299512096": {
                    "membershipId": "4611686018467309748",
                    "membershipType": 4,
                    "characterId": "2305843009299512096",
                    "dateLastPlayed": "2018-08-28T22:27:07Z",
                    "minutesPlayedThisSession": "58",
                    "minutesPlayedTotal": "4115",
                    "light": 359
                },
                "2305843009317224837": {
                    "membershipId": "4611686018467309748",
                    "membershipType": 4,
                    "characterId": "2305843009317224837",
                    "dateLastPlayed": "2017-12-08T19:34:05Z",
                    "minutesPlayedThisSession": "12",
                    "minutesPlayedTotal": "12",
                    "light": 10
                }
            },
            "privacy": 1
        },
        "characterUninstancedItemComponents": {},
        "itemComponents": {}
    },
    "ErrorCode": 1,
    "ThrottleSeconds": 0,
    "ErrorStatus": "Success",
    "Message": "Ok",
    "MessageData": {}
}

我该如何定位这个?我期待类似于我如何做一个数组的东西,类似于:

var characterIds = characterData.Response.characters.data;

   for(var i = 0; i < characterIds.length; i++){
     var characterId = characterIds[i];
     var characterMembershipId = characterId.membershipId; 
     console.log(characterMembershipId);
   }

任何帮助都会在这里受到赞赏 - 抱歉,如果我的解释有点不妥,我的术语不是很好:试图通过陷入困境来掌握和学习东西!

编辑: 感谢到目前为止的帮助,我想我可能在解释我所追求的方面做得不好。

我试图从 For 循环中得到的部分是Response.characters.data随机数(当前"2305843009301086354"和)的结果 - 它根据 API 请求而变化,因此"2305843009299512096""2305843009317224837"

{
    "Response": {
        "characters": {
            "data": {
                "2305843009301086354": {
                   "characterId": "2305843009301086354",
                },
                "2305843009299512096": {
                    "characterId": "2305843009299512096",
                },
                "2305843009317224837": {
                    "characterId": "2305843009317224837",
                }

然后从那里,我希望能够为这些结果console.logcharacterId每个循环。.data

对不起,如果这更没有意义,但我非常感谢到目前为止的帮助!

第二次编辑: 抱歉,伙计们,我很厚 - 让它工作,非常感谢帮助!

标签: javascriptapiloopsfor-loop

解决方案


遍历属性Object.valuesdata获取每个成员对象,然后提取每个成员对象membershipId

const input={"Response":{"characters":{"data":{"2305843009301086354":{"membershipId":"4611686018467309748","membershipType":4,"characterId":"2305843009301086354","dateLastPlayed":"2018-08-27T19:22:17Z","minutesPlayedThisSession":"166","minutesPlayedTotal":"1251","light":300},"2305843009299512096":{"membershipId":"4611686018467309748","membershipType":4,"characterId":"2305843009299512096","dateLastPlayed":"2018-08-28T22:27:07Z","minutesPlayedThisSession":"58","minutesPlayedTotal":"4115","light":359},"2305843009317224837":{"membershipId":"4611686018467309748","membershipType":4,"characterId":"2305843009317224837","dateLastPlayed":"2017-12-08T19:34:05Z","minutesPlayedThisSession":"12","minutesPlayedTotal":"12","light":10}},"privacy":1},"characterUninstancedItemComponents":{},"itemComponents":{}},"ErrorCode":1,"ThrottleSeconds":0,"ErrorStatus":"Success","Message":"Ok","MessageData":{}}

Object.values(input.Response.characters.data)
  .forEach(({ membershipId }) => {
    console.log(membershipId);
  });


推荐阅读