javascript - 当您不知道 Google Apps 脚本中的名称时,JSON/JS 对象访问 key

标签 javascript json google-apps-script javascript-objects webtrends

我正在处理来自 Google 应用程序脚本中 Webtrends API 的响应,我有一个如下所示的 JSON/JS 对象:

"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 等...以及每个子行的访问编号。

我能得到访问编号,但我不知道如何得到名字。请注意,名称会不断变化,因为不同的网站每天发送的流量不同。

我获得访问次数时的代码部分:

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
}

}

我试过以下链接,但似乎都没有答案:

Getting JavaScript object key list How to access object using dynamic key? How to access key itself using javascript How do I access properties of a javascript object if I don't know the names?

我只是使用 vanilla google apps 脚本,因为我对 Jquery 等没有任何经验......

如有任何帮助,我们将不胜感激!

最佳答案

我通常使用如下所示的小辅助函数:

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

这会将具有可变键的对象映射到键/值对象 {key:...., val:{}},这通常很方便使用。

describe.only ("stack overflow answer", function(){

    it ("is should create a key/value pair" , function(){

        var res = keyVal(  {
            "facebook.com": {
                "attributes": {},
                "measures": {
                    "Visits": 100
                },
                "SubRows": null
            }});
        res.key.should.equal('facebook.com');
        res.val.attributes.should.deep.equal({});
    });

关于javascript - 当您不知道 Google Apps 脚本中的名称时,JSON/JS 对象访问 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21076431/

相关文章:

javascript - d3js : `xlink:href` is not working

javascript - 使用 PHP 和 JavaScript 更新 DOM 中的用户参与者列表,就像 GitHub Issues 所做的那样

google-apps-script - 使用第二因素身份验证在 G Suite 帐户上执行 Google Apps 脚本

javascript - 如何在 angularjs 中显示 json 的值

google-apps-script - 谷歌应用程序脚本 : How to copy text and preserve formatting?

google-apps-script - 需要增加 URLFetch.Fetch(url) 的超时

javascript - wasm可以使用sysinfo依赖项吗?

javascript - 使用javascript显示html下拉列表选择

javascript - 如何使用JavaScript播放音频文件?

php - MailGun API 不输出 JSON