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

问题描述:

响应如何为键值可变的JSON字符串创建java类?

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

数据示于其余/ ads.getAdGroupStats的Facebook的API。

我无法将统计信息部分转换为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类的格式。

+0

看看这里http://www.json.org/java/ – 2010-09-23 08:54:49

你需要一个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; 
} 
+0

所以内部API会自动将这个Object(GroupAccount)映射到字符串“123456”? – DKSRathore 2010-09-23 09:00:07

+0

此外,我已经尝试过,但没有工作。 – DKSRathore 2010-09-23 09:00:59

+0

当然你需要一个json解析器和一些工作来获取JSON数据到上面描述的类中,这个工作本身不会自动完成。 – 2010-09-23 09:09:30

我是马克艾伦(RestFB维护者)。版本1.6应该通过新选项来映射到内置的JsonObject类型 - 例如,检出http://restfb.com