嗨,我正在学习rails,在我的应用程序中,我正在从res = @client.spots(params[:location][:lat], params[:location][:lng], :types => ['restaurant','food'], :radius => 500)
中获取json格式的值
在我的res对象中,我得到这些值
{
"json_result_object": {
"business_status": "OPERATIONAL",
"geometry": {
"location": {
"lat": 31.4734563,
"lng": 74.2794873
},
},
"icon": "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
"name": "CP Five Star",
"opening_hours": {
"open_now": true
}
}
],
"place_id": "ChIJjfE-TdoDGTkRMom8KQfI9Uc",
"plus_code": {
"compound_code": "F7FH+9Q Lahore, Pakistan",
"global_code": "8J3PF7FH+9Q"
},
},
"reference": "ChIJjfE-TdoDGTkRMom8KQfI9Uc",
"place_id": "ChIJjfE-TdoDGTkRMom8KQfI9Uc",
"vicinity": "Bilal Arcade, Abdul Haque Road, Block G Block G Phase 1 Johar Town, Lahore",
"lat": 31.4734563,
"lng": 74.2794873,
"viewport": {
"northeast": {
"lat": 31.4748154802915,
"lng": 74.28081473029151
},
"southwest": {
"lat": 31.4721175197085,
"lng": 74.2781167697085
}
},
"name": "CP Five Star",
"icon": "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png",
"types": [
"restaurant",
"food",
"point_of_interest",
"establishment
}
现在我只想返回一个JSON数组,该数组只包含place_id、name、lat以下的值lng,图标
&对不起,我使用图像只是为了在终端图像中显示我的实际响应
您可以通过执行res.class
来检查res对象的类型;如果它还不是hash,可以按照这里的步骤将其转换为hash。
使用res散列,您可以像这样返回JSON数组-
[res["place_id"], res["name"], res["lat"], res["lng"], res["icon"]]
是的,最后,我找到了解决方案。res是一个数组,在这个数组中有多个散列,因为我从Google Places API获得了这个,所以如果有人想访问附近餐馆的名称、纬度、经度、place_id,他可以很容易地通过以下代码进行映射。
resturants =res.map { |a| {id: a.place_id , name: a.name , lat: a.lat, lng: a.lng , icon: a.icon}}
json_response "Successfully retrive data" , true, {Resturant: resturants }, :ok
注意:json_response是我在应用程序控制器中的函数,您也可以使用render json。
如果你想要阵列,你可以通过轻松完成
res.pluck(:name, :place_id , :lat , :lng, :icon)