简体   繁体   中英

Parse JSON from HTTParty using Ruby on Rails

I am implementation of data from a JSON file to a Ruby on Rails application by using HTTparty gem, but I am getting Error no implicit conversion of String into Integer

I refered this tutorial link

My json data,

{
    "restaurant_name": "Restaurant 3",
    "address": "xyz address",
    "country": "United States",
    "currency": "USD",
    "client_key": "12345",
    "client_name": "Client 3",
    "client_email": "test3@mail.com",
    "client_phone": "9876",
    "product_tier": "tier1",
    "brand_logo_large": {
        "ID": 37,
        "id": 37,
        "title": "bait-al-bahar-logo-design",
        "filename": "bait-al-bahar-logo-design.png",
        "filesize": 105071,
        "url": "http://codekyt.in/froodle-wp/wp-content/uploads/2019/01/bait-al-bahar-logo-design.png",
        "link": "http://codekyt.in/froodle-wp/projects/res-1-client-1/bait-al-bahar-logo-design/",
        "alt": "",
        "author": "1",
        "description": "",
        "caption": "",
        "name": "bait-al-bahar-logo-design",
        "status": "inherit",
        "uploaded_to": 35,
        "date": "2019-01-04 11:11:48",
        "modified": "2019-01-04 11:13:01",
        "menu_order": 0,
        "mime_type": "image/png",
        "type": "image",
        "subtype": "png",
        "icon": "http://codekyt.in/froodle-wp/wp-includes/images/media/default.png",
        "width": 600,
        "height": 500,
        "sizes": {
            "thumbnail": "http://codekyt.in/froodle-wp/wp-content/uploads/2019/01/bait-al-bahar-logo-design-150x150.png",
            "thumbnail-width": 150,
            "thumbnail-height": 150,
            "medium": "http://codekyt.in/froodle-wp/wp-content/uploads/2019/01/bait-al-bahar-logo-design-300x250.png",
            "medium-width": 300,
            "medium-height": 250,
            "medium_large": "http://codekyt.in/froodle-wp/wp-content/uploads/2019/01/bait-al-bahar-logo-design.png",
            "medium_large-width": 600,
            "medium_large-height": 500,
            "large": "http://codekyt.in/froodle-wp/wp-content/uploads/2019/01/bait-al-bahar-logo-design.png",
            "large-width": 600,
            "large-height": 500
        }
    }

In model,

include HTTParty

In controller

def index  
  require 'httparty'
  @category = HTTParty.get(
    'http://codekyt.in/froodle-wp/wp-json/data/v2/projects?client_key=12345',
    :headers =>{'Content-Type' => 'application/json'}
  )
end

In gemfile,

gem 'httparty'
gem 'json'

In view,

<%@category.each do |category|%>
<%=category["restaurant_name"]%>
<%=category["country"]%>
<%=category["currency"]%>
<%=category["usd"]%>
<%=category["client_key"]%>
<%=category["client_name"]%>
<%=category["client_email"]%>
<%=category["client_phone"]%>
<%=category["product_tier"]%>
<%=category["brand_logo_large"]%>
<%end%>

HTTParty.get returns an encapsulated response type of class HTTParty::Response , you need to retrieve the parsed response from that by:

response = HTTParty.get(
  'http://codekyt.in/froodle-wp/wp-json/data/v2/projects?client_key=12345',
  :headers =>{'Content-Type' => 'application/json'}
)
@category = response.parsed_response # this will return the json.

Also you do not need to iterate on @category in your case, the json object is singular and you can directly use it:

<%=@category["restaurant_name"]%>
<%=@category["country"]%>
<%=@category["currency"]%>
<%=@category["usd"]%>
<%=@category["client_key"]%>
<%=@category["client_name"]%>
<%=@category["client_email"]%>
<%=@category["client_phone"]%>
<%=@category["product_tier"]%>
<%=@category["brand_logo_large"]%>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM