2010-09-23 71 views
1

響應如何爲鍵值可變的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

回答

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; 
} 
+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

1

我是馬克艾倫(RestFB維護者)。版本1.6應該通過新選項來映射到內置的JsonObject類型 - 例如,檢出http://restfb.com

相關問題