I'm using Talend 5.5.
I have this ArrayList
(segments_id) that should be filled by the JSON feed:
List <Integer> segments_id = Jsonpath.read(row11.Body,"$.response.data.*.segment_id")
The list segments_id
should hold all the values of the fields "segment_id" from the JSON object (row11.Body):
(25226676,25226672,25226668)
But the list is empty... What is the problem in my json path??
row11.Body
holds below response:
{
"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
}
}
}
You are missing brackets around the wildcard item and you should use below search query which will avoid selecting all segment_id nodes but only ones that are direct children of the data node:
$.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);
}
}
Which should produce the expected array elements:
[25226676,25226672,25226668]