with respond read rails parse example ruby-on-rails ruby json

ruby-on-rails - respond - ruby read json



Cómo convertir un objeto Ruby a JSON (3)

Intentalo. Si estás usando Ruby on Rails (y las etiquetas dicen que lo estás), creo que este código exacto ya debería funcionar, sin requerir nada.

Rails admite la salida JSON de los controladores, por lo que ya incluye todo el código de serialización JSON que necesitará. Si planea generar estos datos a través de un controlador, puede ahorrar tiempo simplemente escribiendo

render :json => @person

Me gustaría hacer algo como esto:

require ''json'' class Person attr_accessor :fname, :lname end p = Person.new p.fname = "Mike" p.lname = "Smith" p.to_json

¿Es posible?


Para hacer que tu clase Ruby sea compatible con JSON sin tocar Rails, definirías dos métodos:

  • to_json , que devuelve un objeto JSON
  • as_json , que devuelve una representación hash del objeto

Cuando su objeto responde correctamente tanto a to_json como a as_json , puede comportarse correctamente incluso cuando está anidado en otras clases estándar como Array y / o Hash:

#!/usr/bin/env ruby require ''json'' class Person attr_accessor :fname, :lname def as_json(options={}) { fname: @fname, lname: @lname } end def to_json(*options) as_json(*options).to_json(*options) end end p = Person.new p.fname = "Mike" p.lname = "Smith" # case 1 puts p.to_json # output: {"fname":"Mike","lname":"Smith"} # case 2 puts [p].to_json # output: [{"fname":"Mike","lname":"Smith"}] # case 3 h = {:some_key => p} puts h.to_json # output: {"some_key":{"fname":"Mike","lname":"Smith"}} puts JSON.pretty_generate(h) # output # { # "some_key": { # "fname": "Mike", # "lname": "Smith" # } # }

Consulte también " Uso del método to_json personalizado en objetos anidados ".


Sí, puedes hacerlo con to_json .

Es posible que deba require ''json'' si no está ejecutando Rails.