【问题标题】:Return specific values from array of hashes - JSON从哈希数组返回特定​​值 - JSON
【发布时间】:2020-12-26 16:42:31
【问题描述】:

您好,我正在学习 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 液化气,图标

& 抱歉,我使用图片只是为了在终端 image 中显示我的实际回复

【问题讨论】:

  • 你的 json 不正确。你需要关注这个stackoverflow.com/a/7964378/297087
  • 我从 json 编辑器获取这个
  • @Salil 我用终端的实际图像更新了我的问题,请看一下

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-6


【解决方案1】:

您可以通过 res.class 来检查您的 res 对象类型;如果还不是hash,可以按照here的步骤转换成hash。

使用 res 哈希,您可以像这样返回 JSON 数组 -

[res["place_id"], res["name"], res["lat"], res["lng"], res["icon"]]

【讨论】:

  • res 类是数组
【解决方案2】:

是的,最后,我找到了解决方案。 res 是一个数组,这个数组中有多个哈希值,因为我从 Google Places API 得到这个,所以如果有人想访问附近餐馆的名称、纬度、经度、place_id,他可以通过 .Map 轻松完成以下代码。

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 是我在应用程序控制器中的函数,您也可以使用渲染 json。

如果你想要数组数组,你可以很容易地做到这一点

res.pluck(:name, :place_id , :lat , :lng, :icon)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-03
    • 2023-04-01
    • 2016-05-29
    • 1970-01-01
    • 2014-03-09
    • 2017-03-21
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多