Android:从嵌套在另一数组中的数组提取JSON对象
提取嵌套数组中的JSON对象方法
嘿,看你的数据结构,resp_body是一个包含路由信息的数组,每个路由对象里又嵌套了trips_assigned数组,里面就是你要的行程对象。下面用两种常用语言给你演示提取方式:
先把你的JSON数据格式化,让结构更清晰:
{ "status": 0, "message": "successfull", "resp_body": [ { "route_id": "4567657tyrthnhrthnyt65y", "distance": "200km", "route_duration": "2hrs", "express": true, "status": "active", "route_name": "nairobi-nyeri", "peak_fare": "250", "offpeak_fare": "200", "trips_assigned": [ { "trip_id": "43tergf", "date": "2/2/16", "status": "enroute" }, { "trip_id": "45i27563t34", "date": "12/12/12", "status": "..." } ] } ] }
JavaScript 示例
提取所有行程对象
如果要把所有trips_assigned里的对象都取出来,可以用数组的flatMap方法,一步到位:
const data = { /* 你的JSON数据 */ }; // 提取所有行程对象 const allTrips = data.resp_body.flatMap(route => route.trips_assigned); console.log(allTrips);
提取特定条件的行程(比如状态为"enroute"的)
如果只需要符合某个条件的对象,比如正在途中的行程,可以加个过滤:
const enrouteTrips = data.resp_body.flatMap(route => route.trips_assigned.filter(trip => trip.status === "enroute") ); console.log(enrouteTrips);
Python 示例
提取所有行程对象
Python里可以用列表推导式来实现,简洁明了:
data = { /* 你的JSON数据 */ } # 提取所有行程对象 all_trips = [trip for route in data['resp_body'] for trip in route['trips_assigned']] print(all_trips)
提取特定条件的行程
同样,要过滤特定状态的行程,只需要在推导式里加条件:
enroute_trips = [ trip for route in data['resp_body'] for trip in route['trips_assigned'] if trip['status'] == "enroute" ] print(enroute_trips)
补充说明
如果你的resp_body数组里有多个路由对象,上面的方法也能自动遍历所有路由,把所有嵌套的行程对象都提取出来。要是你只需要某个特定路由里的行程,那就先定位到该路由,再取trips_assigned就行,比如:
// JavaScript 取第一个路由的所有行程 const firstRouteTrips = data.resp_body[0].trips_assigned;
# Python 取第一个路由的所有行程 first_route_trips = data['resp_body'][0]['trips_assigned']
内容的提问来源于stack exchange,提问作者Cp_Ginius
相关产品推荐
相关产品推荐

