如何为键是可变的JSON字符串创建一个java类?

时间:2010-09-23 08:50:38

标签: java json facebook restfb

回复

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
      }
    }
  }
]

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

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:1)

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