2014-10-06 62 views
0

我正在使用Talend 5.5。 我有這個ArrayList(segments_id)應該由JSON提要填寫:在Talend閱讀jsonpath into arraylist

List <Integer> segments_id = Jsonpath.read(row11.Body,"$.response.data.*.segment_id") 

segments_id應持田的所有值從JSON對象(row11.Body)「SEGMENT_ID」名單:

(25226676,25226672,25226668)

但列表爲空...什麼是我的JSON路徑的問題?

row11.Body持有以下回應:

{ 
    "response": { 
     "code": 200, 
     "msg": "Success", 
     "data": [ 
      { 
       "segment_id": 25226676, 
       "segment_name": "01-N-Roulette(05)-FI", 
       "type": "advert", 
       "metric": { 
        "cpm": "$19.50", 
        "unique_cpm": "$19.58", 
        "cpc": "$2.82", 
        "unique_cpc": "$3.53", 
        "cpa": "$0.00", 
        "unique_cpa": "$0.00", 
        "impressions": "723", 
        "unique_impressions": "720", 
        "clicks": "5", 
        "unique_clicks": "4", 
        "conversions": "0", 
        "unique_conversions": "0", 
        "ctr": "0.692%", 
        "unique_ctr": "0.556%", 
        "conversion_rate": "0.00%", 
        "unique_conversion_rate": "0.00%", 
        "spend": "$14.10", 
        "revenue": "$14.10", 
        "margin": "$0.00", 
        "percentage_margin": "0.00%", 
        "frequency": "1.0", 
        "social_impressions": "82", 
        "unique_social_impressions": "0", 
        "social_clicks": "0", 
        "unique_social_clicks": "0", 
        "social_ctr": "0.000%", 
        "unique_social_ctr": "0.000%", 
        "social_spend": "$3.46", 
        "social_impressions_rate": "11.342%", 
        "social_clicks_rate": "0.00%", 
        "social_spend_rate": "24.54%", 
        "conversions_1": "0", 
        "unique_conversions_1": "0", 
        "conversions_rate_1": "0.000%", 
        "conversion_revenue_1": "$0.00", 
        "cost_per_conversion_1": "$0.00", 
        "conversions_2": "0", 
        "unique_conversions_2": "0", 
        "conversions_rate_2": "0.000%", 
        "conversion_revenue_2": "$0.00", 
        "cost_per_conversion_2": "$0.00", 
        "conversions_3": "0", 
        "unique_conversions_3": "0", 
        "conversions_rate_3": "0.000%", 
        "conversion_revenue_3": "$0.00", 
        "cost_per_conversion_3": "$0.00", 
        "facebook_connections": "0", 
        "facebook_connections_rate": "0.000%", 
        "cost_per_facebook_connection": "$0.00", 
        "post_impression_conversions": "0", 
        "post_impression_conversion_1": "0", 
        "post_impression_conversion_2": "0", 
        "post_impression_conversion_3": "0", 
        "actions": "5", 
        "action_rate": "0.692%", 
        "cost_per_action": "$2.82", 
        "client_cpm": "$19.50", 
        "client_cpc": "$2.82", 
        "client_cpa": "$0.00", 
        "client_spend": "$14.10", 
        "shares": "0", 
        "u_shares": "0", 
        "share_rate": "0.000%", 
        "referrals": "0", 
        "u_referrals": "0", 
        "referrals_per_share": "0.000", 
        "newsfeed_impressions": "723", 
        "newsfeed_clicks": "5", 
        "newsfeed_average_positioning": "15.590", 
        "newsfeed_ctr": "0.007%", 
        "influenced_conversions": "0", 
        "influenced_conversion_rate": "0.000%", 
        "cost_per_influenced_conversion": "$0.00" 
       } 
      }, 
      { 
       "segment_id": 25226672, 
       "segment_name": "01-N-FiI+NO+DEslots(03)-FI", 
       "type": "advert", 
       "metric": { 
        "cpm": "$16.96", 
        "unique_cpm": "$17.00", 
        "cpc": "$2.70", 
        "unique_cpc": "$3.38", 
        "cpa": "$0.00", 
        "unique_cpa": "$0.00", 
        "impressions": "1,592", 
        "unique_impressions": "1,588", 
        "clicks": "10", 
        "unique_clicks": "8", 
        "conversions": "0", 
        "unique_conversions": "0", 
        "ctr": "0.628%", 
        "unique_ctr": "0.504%", 
        "conversion_rate": "0.00%", 
        "unique_conversion_rate": "0.00%", 
        "spend": "$27.00", 
        "revenue": "$27.00", 
        "margin": "$0.00", 
        "percentage_margin": "0.00%", 
        "frequency": "1.0", 
        "social_impressions": "234", 
        "unique_social_impressions": "0", 
        "social_clicks": "0", 
        "unique_social_clicks": "0", 
        "social_ctr": "0.000%", 
        "unique_social_ctr": "0.000%", 
        "social_spend": "$3.95", 
        "social_impressions_rate": "14.698%", 
        "social_clicks_rate": "0.00%", 
        "social_spend_rate": "14.63%", 
        "conversions_1": "0", 
        "unique_conversions_1": "0", 
        "conversions_rate_1": "0.000%", 
        "conversion_revenue_1": "$0.00", 
        "cost_per_conversion_1": "$0.00", 
        "conversions_2": "0", 
        "unique_conversions_2": "0", 
        "conversions_rate_2": "0.000%", 
        "conversion_revenue_2": "$0.00", 
        "cost_per_conversion_2": "$0.00", 
        "conversions_3": "0", 
        "unique_conversions_3": "0", 
        "conversions_rate_3": "0.000%", 
        "conversion_revenue_3": "$0.00", 
        "cost_per_conversion_3": "$0.00", 
        "facebook_connections": "0", 
        "facebook_connections_rate": "0.000%", 
        "cost_per_facebook_connection": "$0.00", 
        "post_impression_conversions": "0", 
        "post_impression_conversion_1": "0", 
        "post_impression_conversion_2": "0", 
        "post_impression_conversion_3": "0", 
        "actions": "9", 
        "action_rate": "0.565%", 
        "cost_per_action": "$3.00", 
        "client_cpm": "$16.96", 
        "client_cpc": "$2.70", 
        "client_cpa": "$0.00", 
        "client_spend": "$27.00", 
        "shares": "0", 
        "u_shares": "0", 
        "share_rate": "0.000%", 
        "referrals": "0", 
        "u_referrals": "0", 
        "referrals_per_share": "0.000", 
        "newsfeed_impressions": "1,592", 
        "newsfeed_clicks": "10", 
        "newsfeed_average_positioning": "13.280", 
        "newsfeed_ctr": "0.006%", 
        "influenced_conversions": "0", 
        "influenced_conversion_rate": "0.000%", 
        "cost_per_influenced_conversion": "$0.00" 
       } 
      }, 
      { 
       "segment_id": 25226668, 
       "segment_name": "01-N-LottoJackpot(01)-FI", 
       "type": "advert", 
       "metric": { 
        "cpm": "$14.36", 
        "unique_cpm": "$14.42", 
        "cpc": "$2.20", 
        "unique_cpc": "$4.71", 
        "cpa": "$0.00", 
        "unique_cpa": "$0.00", 
        "impressions": "2,298", 
        "unique_impressions": "2,289", 
        "clicks": "15", 
        "unique_clicks": "7", 
        "conversions": "0", 
        "unique_conversions": "0", 
        "ctr": "0.653%", 
        "unique_ctr": "0.306%", 
        "conversion_rate": "0.00%", 
        "unique_conversion_rate": "0.00%", 
        "spend": "$33.00", 
        "revenue": "$33.00", 
        "margin": "$0.00", 
        "percentage_margin": "0.00%", 
        "frequency": "1.0", 
        "social_impressions": "310", 
        "unique_social_impressions": "0", 
        "social_clicks": "0", 
        "unique_social_clicks": "0", 
        "social_ctr": "0.000%", 
        "unique_social_ctr": "0.000%", 
        "social_spend": "$5.34", 
        "social_impressions_rate": "13.490%", 
        "social_clicks_rate": "0.00%", 
        "social_spend_rate": "16.18%", 
        "conversions_1": "0", 
        "unique_conversions_1": "0", 
        "conversions_rate_1": "0.000%", 
        "conversion_revenue_1": "$0.00", 
        "cost_per_conversion_1": "$0.00", 
        "conversions_2": "0", 
        "unique_conversions_2": "0", 
        "conversions_rate_2": "0.000%", 
        "conversion_revenue_2": "$0.00", 
        "cost_per_conversion_2": "$0.00", 
        "conversions_3": "0", 
        "unique_conversions_3": "0", 
        "conversions_rate_3": "0.000%", 
        "conversion_revenue_3": "$0.00", 
        "cost_per_conversion_3": "$0.00", 
        "facebook_connections": "0", 
        "facebook_connections_rate": "0.000%", 
        "cost_per_facebook_connection": "$0.00", 
        "post_impression_conversions": "0", 
        "post_impression_conversion_1": "0", 
        "post_impression_conversion_2": "0", 
        "post_impression_conversion_3": "0", 
        "actions": "12", 
        "action_rate": "0.522%", 
        "cost_per_action": "$2.75", 
        "client_cpm": "$14.36", 
        "client_cpc": "$2.20", 
        "client_cpa": "$0.00", 
        "client_spend": "$33.00", 
        "shares": "0", 
        "u_shares": "0", 
        "share_rate": "0.000%", 
        "referrals": "0", 
        "u_referrals": "0", 
        "referrals_per_share": "0.000", 
        "newsfeed_impressions": "2,298", 
        "newsfeed_clicks": "15", 
        "newsfeed_average_positioning": "13.880", 
        "newsfeed_ctr": "0.007%", 
        "influenced_conversions": "0", 
        "influenced_conversion_rate": "0.000%", 
        "cost_per_influenced_conversion": "$0.00" 
       } 
      } 
     ], 
     "paging": { 
      "current": 1, 
      "next": null, 
      "currentItemCount": 5, 
      "first": 1, 
      "itemCountPerPage": 20, 
      "pageCount": 1, 
      "totalItemCount": 5, 
      "pageInfo": true 
     } 
    } 
} 
+1

是否可能對您t o使用更小的一組數據重現您的問題?任何人都不可能閱讀你已經包含在問題中的JSON,並計算出它是否存在錯誤。 – 2014-10-06 06:31:33

+0

@Shani Moyal同時發佈服務器端代碼。根據jsonlint.com, – 2014-10-06 06:33:59

+0

有效的json – 2014-10-06 06:38:37

回答

0

你缺少周圍的通配符項括號,你應該使用下面的搜索查詢,這將避免選擇所有SEGMENT_ID節點,但只有那些是數據的直接孩子節點:

$.response.data[*].segment_id 
public class JsonPathReader 
{ 
    public static void main(String[] args) throws IOException 
    { 
    InputStream jsonData; // Load you response json feed. 
    List<Integer> segmentIds = JsonPath.read(jsonData, "$.response.data[*].segment_id"); 
    System.out.println(segmentIds); 
    } 
} 

哪個應該產生預期的陣列元素:

[25226676,25226672,25226668] 
0

您可以使用JSON電梯庫,輕鬆地訪問特定的鍵 - 按值對:

Json jsonObj = parse(json) 
JsonAST sid = jsonObj \\ "segment_id" 

SID不會包含所有值的列表。通過訪問

sid.children 

並遍歷它,你可以

.extract[Long] 

從中提取long值。