首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JSON数据有Javascript问题(Destiny 2 API)

JSON数据有Javascript问题(Destiny 2 API)
EN

Stack Overflow用户
提问于 2018-08-29 08:58:27
回答 2查看 199关注 0票数 1

我一直在尝试使用JSON数据和API创建我的第一个合适的站点;我使用的是Destiny 2的API--但现在遇到了一些问题。

例如,我不确定如何遍历每个Response.characters.data.(?).membershipIdmembershipId(?)是动态的,这取决于最初的API请求,但我不确定如何遍历它,因为它不在数组中。

代码语言:javascript
复制
 {
    "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": {}
}

我该如何确定目标呢?我所期望的是类似于我处理数组的方法,类似于:

代码语言:javascript
复制
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""2305843009299512096""2305843009317224837") -它根据API请求的不同而变化,因此:

代码语言:javascript
复制
{
    "Response": {
        "characters": {
            "data": {
                "2305843009301086354": {
                   "characterId": "2305843009301086354",
                },
                "2305843009299512096": {
                    "characterId": "2305843009299512096",
                },
                "2305843009317224837": {
                    "characterId": "2305843009317224837",
                }

然后,我希望能够console.log这些.data结果的每个循环的characterId

抱歉,如果这更不合理,但我真的很感谢你到目前为止的帮助!

第二次编辑:很抱歉,我太胖了-让它工作了,真的很感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-29 09:00:48

遍历data属性的Object.values以获取每个成员对象,然后提取每个成员的membershipId

代码语言:javascript
复制
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);
  });

票数 0
EN

Stack Overflow用户

发布于 2018-08-29 10:11:57

在这里尝试一下,使用jquery "for“遍历字符,最后打印它们的id

代码语言:javascript
复制
var response = {
"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 data = response;

$characters = data.Response.characters.data;
for($character in $characters)
{
  console.log($characters[$character].membershipId);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52068076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档