java - 在 Android 中解析 List<List<String>>?

标签 java android google-api google-api-java-client adsense

我正在使用 Google Java Client Library 开发自定义 Adsense 报告工具适用于Android。我已成功通过身份验证,并且可以对服务器进行 API 调用。但现在当我收到响应时,我不知道如何解析它并向用户正确显示结果。

根据 javaDocs,AdsenseReportsGenerateResponse.getRows()生成一个列表>但我有点迷失如何正确解析它以获得:

-Today's earnings
-Yesterday's earnings
-Last 7 days
-Last month
-From the beginning of time

这是与问题相关的部分代码

        Reports.Generate request = adsense.reports().generate(startDate, endDate);    

        request.setMetric(Arrays.asList("PAGE_VIEWS", "AD_REQUESTS", "AD_REQUESTS_COVERAGE", "CLICKS",
                "AD_REQUESTS_CTR", "COST_PER_CLICK", "AD_REQUESTS_RPM", "EARNINGS"));

        request.setDimension(Arrays.asList("DATE", "WEEK", "MONTH"));    
        request.setSort(Arrays.asList("+DATE"));

        AdsenseReportsGenerateResponse response = request.execute();

        //TODO: Here be dragons
        response.getRows();

编辑:这是 javaDoc,其中提到 getRow()

嗯,这个网站上似乎没有人可以提供帮助?!

最佳答案

您应该会发现我们的示例代码很有用:http://code.google.com/p/google-api-java-client/wiki/APIs#AdSense_Management_API

也就是说,这是您感兴趣的文件:http://code.google.com/p/google-api-java-client/source/browse/adsense-cmdline-sample/src/main/java/com/google/api/services/samples/adsense/cmdline/GenerateReport.java?repo=samples

这是打印输出的代码 fragment 。请注意,这是针对命令行应用程序的,但应该很容易适应:

if ((response.getRows() != null) && !response.getRows().isEmpty()) {
  // Display headers.
  for (AdsenseReportsGenerateResponseHeaders header : response.getHeaders()) {
    System.out.printf("%25s", header.getName());
  }
  System.out.println();

  // Display results.
  for (List<String> row : response.getRows()) {
    for (String column : row) {
      System.out.printf("%25s", column);
    }
    System.out.println();
    }

  System.out.println();
} else {
  System.out.println("No rows returned.");
}

对于获取不同时间段的数据,您可能应该运行不同的报告,而不是将其全部塞入一个报告中,因为这将需要不同的开始日期和结束日期。其工作原理如下:

  • 今天的收入:将开始日期和结束日期设置为今天,将维度列表设置为“日期”
  • 昨天的收入:将开始日期和结束日期设置为昨天,将维度列表设置为“DATE”
  • 过去 7 天:如果您需要每天的数据,则可以将开始日期设置为 7 天前,将结束日期设置为今天,并将维度列表设置为日期。如果您想汇总统计数据,您可能需要自己计算,因为“周”和“月”指的是日历周和月,而不是最近 7 天。
  • 上个月:开始日期为上个月 1 日,结束日期为该月最后一天,维度“MONTH”。
  • 所有时间:您希望如何汇总?每月?然后将开始日期设置为 1980 年 1 月 1 日,结束日期设置为今天,维度设置为月份。

这篇博文应该有助于更好地理解报告概念:http://adsenseapi.blogspot.com/2011/11/adsense-management-api-diving-into.html

如果您需要其他帮助,请告诉我!

关于java - 在 Android 中解析 List<List<String>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779456/

相关文章:

java - Google Drive API - 如何使用域范围服务帐户

java - Android sqlite 日志报告和 db.close()

java - 如何从 void 方法返回 Completable

android - Google Cloud Messaging (GCM) 使用哪个端口和协议(protocol)?

java - Google OAuth 返回 invalid_grant token 类型不正确

google-api - 网络开发人员应该了解哪些 Google API/工具?

java - 将 java.util.Date 对象转换为 Windows FILETIME 结构

java - 不支持的主要.次要版本 52.0 - grails

android - 从 JDB 调试 Android 应用程序(在 Emacs 中)

Android:使用 Picasso 在 horizo​​ntalscrollview 中延迟加载图像