【问题标题】:How to create a java class for a JSON string where keys are variable?如何为键是可变的 JSON 字符串创建 java 类?
【发布时间】:2010-09-23 08:50:37
【问题描述】:

回应

array (
    0 => 
    array (
      'time_start' => 1252652400,
      'time_stop' => 1252911600,
      'stats' => 
      array (
        6002306163363 => 
        array (
          'id' => 6002306163363,
          'impressions' => '6713',
          'clicks' => '7',
          'spent' => '593',
          'actions' => '1',
        ),
      ),
    ),
  )

数据显示在rest/ads.getAdGroupStats的facebook api中。

我无法将 stats 部分转换为 Java 类,其中 6002306163363 是一个变量,同样可以有更多的映射。以下是三个广告 123456,23456,34567 的完整结果。

[
  {
    "time_start": 0,
    "time_stop": 1285224928,
    "stats": {
      "123456": {
        "id": 123456,
        "impressions": 40,
        "clicks": 0,
        "spent": 0,
        "social_impressions": 0,
        "social_clicks": 0,
        "social_spent": 0
      },
      "23456": {
        "id": 23456,
        "impressions": 3,
        "clicks": 0,
        "spent": 0,
        "social_impressions": 0,
        "social_clicks": 0,
        "social_spent": 0
      },
      "34567": {
        "id": 34567,
        "impressions": 211457,
        "clicks": 84,
        "spent": 6898,
        "social_impressions": 124,
        "social_clicks": 0,
        "social_spent": 0
      }
    }
  }
]

我必须创建一个可以映射到上述 JSON 的 Java 类,但不能这样做。有人可以帮我吗?

更新:我从 facebook 和我们使用的 api 中获取这些数据需要类,以便可以映射返回的 json。我只能控制创建一个类,以便 api 在内部将其映射出来。我需要所需的java类的格式。

【问题讨论】:

标签: java json facebook restfb


【解决方案1】:

您需要一个 hashmap 或类似的东西来处理这些数字键。

public class GroupStats {
   long time_start;
   long time_stop;
   HashMap<GroupAccount> stats;
}

public class GroupAccount {
   long id;
   int impressions;
   int clicks;
   int spent;
   int social_impressions;
   int social_spent;
}

【讨论】:

  • 所以内部 api 会自动将此 Object(GroupAccount) 映射到字符串“123456”?
  • 当然,您需要一个 json 解析器和一些工作来将 JSON 数据放入上述类中,这些工作不会自动完成。
  • 我正在使用 restfb jar 并且 Parser 包含在第 3 方 jar 中,并且 api 要求 Mapping 类。那么我应该修改这个jar吗?我的意思是每次我将 jar 更新到新版本时,我都需要更新解析器。
  • 我不知道这个 jar,但我想它不够聪明,无法进行这样的映射。使用例如手动进行映射应该非常简单。来自 json.org 的 json 解析器。
【解决方案2】:

我是 Mark Allen(RestFB 维护者)。版本 1.6 应该使用映射到内置 JsonObject 类型的新选项来解决这个问题 - 以查看 http://restfb.com 为例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多