Whhat I am trying to achieve is to flatten a JSON nested response directly on the fly. The response I am getting from the API URL is
{ "currency" : "USD", "results" : [ {
"itineraries" : [ {
"outbound" : {
"duration" : "17:50",
"flights" : [ {
"departs_at" : "2018-10-15T08:45",
"arrives_at" : "2018-10-15T11:00",
"origin" : {
"airport" : "IST",
"terminal" : "I"
},
"destination" : {
"airport" : "LHR",
"terminal" : "5"
},
"marketing_airline" : "BA",
"operating_airline" : "BA",
"flight_number" : "675",
"aircraft" : "320",
"booking_info" : {
"travel_class" : "ECONOMY",
"booking_code" : "S",
"seats_remaining" : 7
}
}, {
"departs_at" : "2018-10-15T16:55",
"arrives_at" : "2018-10-15T19:35",
"origin" : {
"airport" : "LHR",
"terminal" : "5"
},
"destination" : {
"airport" : "BOS",
"terminal" : "E"
},
"marketing_airline" : "BA",
"operating_airline" : "BA",
"flight_number" : "203",
"aircraft" : "777",
"booking_info" : {
"travel_class" : "ECONOMY",
"booking_code" : "N",
"seats_remaining" : 9
}
} ]
},
"inbound" : {
"duration" : "14:00",
"flights" : [ {
"departs_at" : "2018-10-21T19:25",
"arrives_at" : "2018-10-22T07:00",
"origin" : {
"airport" : "BOS",
"terminal" : "E"
},
"destination" : {
"airport" : "LHR",
"terminal" : "5"
},
"marketing_airline" : "BA",
"operating_airline" : "BA",
"flight_number" : "212",
"aircraft" : "388",
"booking_info" : {
"travel_class" : "ECONOMY",
"booking_code" : "N",
"seats_remaining" : 9
}
}, {
"departs_at" : "2018-10-22T10:25",
"arrives_at" : "2018-10-22T16:25",
"origin" : {
"airport" : "LHR",
"terminal" : "5"
},
"destination" : {
"airport" : "IST",
"terminal" : "I"
},
"marketing_airline" : "BA",
"operating_airline" : "BA",
"flight_number" : "676",
"aircraft" : "320",
"booking_info" : {
"travel_class" : "ECONOMY",
"booking_code" : "S",
"seats_remaining" : 9
}
} ]
}
} ],
"fare" : {
"total_price" : "486.17",
"price_per_adult" : {
"total_fare" : "486.17",
"tax" : "343.17"
},
"restrictions" : {
"refundable" : false,
"change_penalties" : true
}
} }, {
"itineraries" : [ {
"outbound" : {
"duration" : "10:55",
"flights" : [ {
"departs_at" : "2018-10-15T14:35",
"arrives_at" : "2018-10-15T18:30",
"origin" : {
"airport" : "IST",
"terminal" : "I"
},
"destination" : {
"airport" : "BOS",
"terminal" : "E"
},
"marketing_airline" : "TK",
"operating_airline" : "TK",
"flight_number" : "81",
"aircraft" : "333",
"booking_info" : {
"travel_class" : "ECONOMY",
"booking_code" : "W",
"seats_remaining" : 9
}
} ]
},
"inbound" : {
"duration" : "09:35",
"flights" : [ {
"departs_at" : "2018-10-21T23:35",
"arrives_at" : "2018-10-22T16:10",
"origin" : {
"airport" : "BOS",
"terminal" : "E"
},
"destination" : {
"airport" : "IST",
"terminal" : "I"
},
"marketing_airline" : "TK",
"operating_airline" : "TK",
"flight_number" : "82",
"aircraft" : "333",
"booking_info" : {
"travel_class" : "ECONOMY",
"booking_code" : "W",
"seats_remaining" : 9
}
} ]
}
} ],
"fare" : {
"total_price" : "528.31",
"price_per_adult" : {
"total_fare" : "528.31",
"tax" : "344.31"
},
"restrictions" : {
"refundable" : false,
"change_penalties" : true
}
} } ] }
And what I basically need is to get it formatted in a flat way, so everything is on the same level.
I am getting the response file_get_content like this $json_url = file_get_contents('https ://domain/api'); And if I print it it works fine, but having troubles simplifying the result to a flat JSON Response.
EDIT Something like
{
"currency": "USD",
"results[0].itineraries[0].outbound.duration": "17:50",
"results[0].itineraries[0].outbound.flights[0].departs_at": "2018-10-15T08:45",
"results[0].itineraries[0].outbound.flights[0].arrives_at": "2018-10-15T11:00",
"results[0].itineraries[0].outbound.flights[0].origin.airport": "IST",
"results[0].itineraries[0].outbound.flights[0].origin.terminal": "I",
"results[0].itineraries[0].outbound.flights[0].destination.airport": "LHR",
"results[0].itineraries[0].outbound.flights[0].destination.terminal": "5",
"results[0].itineraries[0].outbound.flights[0].marketing_airline": "BA",
"results[0].itineraries[0].outbound.flights[0].operating_airline": "BA",
"results[0].itineraries[0].outbound.flights[0].flight_number": "675",
"results[0].itineraries[0].outbound.flights[0].aircraft": "320",
"results[0].itineraries[0].outbound.flights[0].booking_info.travel_class": "ECONOMY",
"results[0].itineraries[0].outbound.flights[0].booking_info.booking_code": "S",
"results[0].itineraries[0].outbound.flights[0].booking_info.seats_remaining": 7,
"results[0].itineraries[0].outbound.flights[1].departs_at": "2018-10-15T16:55",
"results[0].itineraries[0].outbound.flights[1].arrives_at": "2018-10-15T19:35",
"results[0].itineraries[0].outbound.flights[1].origin.airport": "LHR",
"results[0].itineraries[0].outbound.flights[1].origin.terminal": "5",
"results[0].itineraries[0].outbound.flights[1].destination.airport": "BOS",
"results[0].itineraries[0].outbound.flights[1].destination.terminal": "E",
"results[0].itineraries[0].outbound.flights[1].marketing_airline": "BA",
"results[0].itineraries[0].outbound.flights[1].operating_airline": "BA",
"results[0].itineraries[0].outbound.flights[1].flight_number": "203",
"results[0].itineraries[0].outbound.flights[1].aircraft": "777",
"results[0].itineraries[0].outbound.flights[1].booking_info.travel_class": "ECONOMY",
"results[0].itineraries[0].outbound.flights[1].booking_info.booking_code": "N",
"results[0].itineraries[0].outbound.flights[1].booking_info.seats_remaining": 9,
"results[0].itineraries[0].inbound.duration": "14:00",
"results[0].itineraries[0].inbound.flights[0].departs_at": "2018-10-21T19:25",
"results[0].itineraries[0].inbound.flights[0].arrives_at": "2018-10-22T07:00",
"results[0].itineraries[0].inbound.flights[0].origin.airport": "BOS",
"results[0].itineraries[0].inbound.flights[0].origin.terminal": "E",
"results[0].itineraries[0].inbound.flights[0].destination.airport": "LHR",
"results[0].itineraries[0].inbound.flights[0].destination.terminal": "5",
"results[0].itineraries[0].inbound.flights[0].marketing_airline": "BA",
"results[0].itineraries[0].inbound.flights[0].operating_airline": "BA",
"results[0].itineraries[0].inbound.flights[0].flight_number": "212",
"results[0].itineraries[0].inbound.flights[0].aircraft": "388",
"results[0].itineraries[0].inbound.flights[0].booking_info.travel_class": "ECONOMY",
"results[0].itineraries[0].inbound.flights[0].booking_info.booking_code": "N",
"results[0].itineraries[0].inbound.flights[0].booking_info.seats_remaining": 9,
"results[0].itineraries[0].inbound.flights[1].departs_at": "2018-10-22T10:25",
"results[0].itineraries[0].inbound.flights[1].arrives_at": "2018-10-22T16:25",
"results[0].itineraries[0].inbound.flights[1].origin.airport": "LHR",
"results[0].itineraries[0].inbound.flights[1].origin.terminal": "5",
"results[0].itineraries[0].inbound.flights[1].destination.airport": "IST",
"results[0].itineraries[0].inbound.flights[1].destination.terminal": "I",
"results[0].itineraries[0].inbound.flights[1].marketing_airline": "BA",
"results[0].itineraries[0].inbound.flights[1].operating_airline": "BA",
"results[0].itineraries[0].inbound.flights[1].flight_number": "676",
"results[0].itineraries[0].inbound.flights[1].aircraft": "320",
"results[0].itineraries[0].inbound.flights[1].booking_info.travel_class": "ECONOMY",
"results[0].itineraries[0].inbound.flights[1].booking_info.booking_code": "S",
"results[0].itineraries[0].inbound.flights[1].booking_info.seats_remaining": 9,
"results[0].fare.total_price": "486.17",
"results[0].fare.price_per_adult.total_fare": "486.17",
"results[0].fare.price_per_adult.tax": "343.17",
"results[0].fare.restrictions.refundable": false,
"results[0].fare.restrictions.change_penalties": true
}
{
"currency": "USD",
"results[1].itineraries[0].outbound.duration": "10:55",
"results[1].itineraries[0].outbound.flights[0].departs_at": "2018-10-15T14:35",
"results[1].itineraries[0].outbound.flights[0].arrives_at": "2018-10-15T18:30",
"results[1].itineraries[0].outbound.flights[0].origin.airport": "IST",
"results[1].itineraries[0].outbound.flights[0].origin.terminal": "I",
"results[1].itineraries[0].outbound.flights[0].destination.airport": "BOS",
"results[1].itineraries[0].outbound.flights[0].destination.terminal": "E",
"results[1].itineraries[0].outbound.flights[0].marketing_airline": "TK",
"results[1].itineraries[0].outbound.flights[0].operating_airline": "TK",
"results[1].itineraries[0].outbound.flights[0].flight_number": "81",
"results[1].itineraries[0].outbound.flights[0].aircraft": "333",
"results[1].itineraries[0].outbound.flights[0].booking_info.travel_class": "ECONOMY",
"results[1].itineraries[0].outbound.flights[0].booking_info.booking_code": "W",
"results[1].itineraries[0].outbound.flights[0].booking_info.seats_remaining": 9,
"results[1].itineraries[0].inbound.duration": "09:35",
"results[1].itineraries[0].inbound.flights[0].departs_at": "2018-10-21T23:35",
"results[1].itineraries[0].inbound.flights[0].arrives_at": "2018-10-22T16:10",
"results[1].itineraries[0].inbound.flights[0].origin.airport": "BOS",
"results[1].itineraries[0].inbound.flights[0].origin.terminal": "E",
"results[1].itineraries[0].inbound.flights[0].destination.airport": "IST",
"results[1].itineraries[0].inbound.flights[0].destination.terminal": "I",
"results[1].itineraries[0].inbound.flights[0].marketing_airline": "TK",
"results[1].itineraries[0].inbound.flights[0].operating_airline": "TK",
"results[1].itineraries[0].inbound.flights[0].flight_number": "82",
"results[1].itineraries[0].inbound.flights[0].aircraft": "333",
"results[1].itineraries[0].inbound.flights[0].booking_info.travel_class": "ECONOMY",
"results[1].itineraries[0].inbound.flights[0].booking_info.booking_code": "W",
"results[1].itineraries[0].inbound.flights[0].booking_info.seats_remaining": 9,
"results[1].fare.total_price": "528.31",
"results[1].fare.price_per_adult.total_fare": "528.31",
"results[1].fare.price_per_adult.tax": "344.31",
"results[1].fare.restrictions.refundable": false,
"results[1].fare.restrictions.change_penalties": true
}
Thanks
results[0].itineraries[0].outbound.durationas key,17:50value.