1

Google 애플리케이션 스크립트에서 Webtrends API의 응답으로 작업 중이며 다음과 같은 JSON/JS 개체가 있습니다.Google Apps Script에서 이름을 모르는 경우 JSON/JS Object access

"data": [ 
    { 
     "period": "Month", 
     "start_date": "2013-12", 
     "end_date": "2013-12", 
     "attributes": {}, 
     "measures": { 
      "Visits": 500 
     }, 
     "SubRows": [ 
      { 
       "facebook.com": { 
        "attributes": {}, 
        "measures": { 
         "Visits": 100 
        }, 
        "SubRows": null 
       }, 
       "google.co.uk": { 
        "attributes": {}, 
        "measures": { 
         "Visits": 100 
        }, 
        "SubRows": null 
       }, 
       "newsnow.co.uk": { 
        "attributes": {}, 
        "measures": { 
         "Visits": 100 
        }, 
        "SubRows": null 
       }, 
       "No Referrer": { 
        "attributes": {}, 
        "measures": { 
         "Visits": 100 
        }, 
        "SubRows": null 
       }, 
       "t.co": { 
        "attributes": {}, 
        "measures": { 
         "Visits": 100 
        }, 
        "SubRows": null 
       } 
      } 
     ] 
    } 
] 

내가 액세스해야하는 것은 즉 facebook.com 등의 이름이며 각 하위 행의 번호를 방문합니다.

방문 번호를 얻을 수 있지만 이름을 가져 오는 방법을 찾지 못합니다. 사이트마다 매일 다른 양의 트래픽이 전송되므로 이름이 계속 변경됩니다.

내가 방문 번호 얻는 순간에 내 코드의 섹션 :

Getting JavaScript object key list How to access object using dynamic key? : 나는 다음 링크를 시도했습니다

for(i in dObj){ 
var data = dObj[i].SubRows; 
var sd = dObj[i].start_date; 
var ed = dObj[i].end_date; 

if(sd == ed){ 
    var timep = ""+ sd; 
    } 
    else{ 
    var timep = ""+ sd + "-" + ed; 
    } 

var subRows = data[0]; 

Logger.log(subRows); 

for(i in subRows){ 

    var row = subRows[i]; 
    var rmeasures = row.measures; 
    var rvis = rmeasures.Visits; 

    values = [timep,"",rvis]; //Blank string for where the name of the site would go 
} 

} 

을하지만, 그들 중 누구도 대답을 갖고있는 것 같다 내가 어떤 경험이없는 나는 그냥 바닐라 구글을 사용하고 How to access key itself using javascript How do I access properties of a javascript object if I don't know the names?

스크립트 애플 리케이션 Jquery 등 ...

어떤 도움을 주시면 감사하겠습니다!

답변

1

루프 내에서 변수 i에 현재 키가 들어 있습니다. 빈 문자열을 i으로 바꾸면 필요한 정보를 얻을 수 있습니다. ...., 발 : 이것은 키/값 개체 {키에 변수 키를 사용하여 객체를 매핑합니다

var keyVal = function(o) { 
    var key = Object.keys(o)[0]; 
    return {"key": key, "val":o[key]}; 
} ; 

:

+0

아! 완벽 해, 고마워! 그것은 정확하게 그것을 해결했습니다. – user3187569

2

나는, 대개 다음과 같이 작은 도우미 기능을 사용하여 {} }, 이는 대개 작업하기에 편리합니다.

1

Javascript에 내장 된 더 많은 기능적 도구를 살펴볼 수도 있습니다. 좀 더 간결한 코드도 더 명시 수 있습니다 : 당신이 명시 적 루프가하고있는 일의 일부를 단순화하기 위해

[ 
    [ 
     [ 
      ["2013-12", "facebook.com", 100], 
      ["2013-12", "google.co.uk", 100], 
      ["2013-12", "newsnow.co.uk", 100], 
      ["2013-12", "No Referrer", 100], 
      ["2013-12", "t.co", 100 ] 
     ] 
    ] 
] 
이 그냥 map 사용

Object.keys :

data.map(function(datum) { 
    var timep = datum.start_date == datum.end_date ? datum.end_date : 
      (data.start_date + "-" + datum.end_date); 
    return datum.SubRows.map(function(subRow) { 
     return Object.keys(subRow).map(function(key) { 
      return [timep, key, subRow[key].measures.Visits]; 
     }); 
    }); 
}); 

이 같은 객체 뭔가를 반환 .