Ruby on rails Rails:JSON属性作为方法处理。没有方法错误
我在访问JSON数据的属性时遇到问题。它认为JSON数据是一个函数,而不是访问JSON数据Ruby on rails Rails:JSON属性作为方法处理。没有方法错误,ruby-on-rails,ruby,json,ruby-on-rails-3,Ruby On Rails,Ruby,Json,Ruby On Rails 3,我在访问JSON数据的属性时遇到问题。它认为JSON数据是一个函数,而不是访问JSON数据 @response = HTTParty.get('http://localhost:4000/test') @json = JSON.parse(@response.body) @json.each do |pet| MyModel.create(pet) ! WORKS puts "my object #{pet}" ! WORKS puts "my object
@response = HTTParty.get('http://localhost:4000/test')
@json = JSON.parse(@response.body)
@json.each do |pet|
MyModel.create(pet) ! WORKS
puts "my object #{pet}" ! WORKS
puts "my object attribute #{pet.myattribute}" ! DOES NOT WORK
end
没有方法错误myattribute
谢谢你的帮助 @json=json.parse(@response.body)
返回一个散列,因此需要执行以下操作
puts "my object attributes #{pet['id']}, #{pet['title']}"
您可能希望转换为,以便可以使用符号而不是带引号的字符串,即
@json = JSON.parse(@response.body).with_indifferent_access
# ...
puts "my object attributes #{pet[:id]}, #{pet[:title]}"
您可能已经习惯了JavaScript,其中
object.some\u key
和object[“some\u key”]
做同样的事情。在Ruby中,散列只是一个散列,因此您必须通过对象[“some_key”]
访问值。Ruby中的Struct
类似于JavaScript对象,因为您可以通过两种方式访问值,但键必须是预定义的。pet看起来像什么?{“pet_id”:“49926”,title:“我的title”}
。当访问pet\u id
时,它会显示NoMethodError
<代码>命名错误:未定义的#方法pet_id'谢谢!现在使用pet['title']