Saya harus meniru respons Google API dan membuat struktur data dalam 2 tingkat yang dapat dilalui oleh . seperti ini:

=> user.names.first_name

Bob

Apakah ada cara yang lebih pintar/lebih baik dari ini:

 user = OpenStruct.new(names: OpenStruct.new(first_name: 'Bob'))
1
Fellow Stranger 25 November 2017, 01:37

1 menjawab

Jawaban Terbaik

Metode ini adalah metode yang kasar tetapi berhasil,

require 'ostruct'
require 'json'
# Data in hash
data = {"names" => {"first_name" => "Bob"}}
result = JSON.parse(data.to_json, object_class: OpenStruct)

Dan metode lain adalah menambahkan metode ke kelas Hash itu sendiri,

class Hash
  def to_openstruct
    JSON.parse to_json, object_class: OpenStruct
  end
end

Dengan menggunakan metode di atas, Anda dapat mengonversi hash Anda ke openstruct

data = {"names" => {"first_name" => "Bob"}}
data.to_openstruct
3
nerding_it 23 Januari 2018, 07:37