json으로 루비 보석 사용하여 JSON으로 인코딩 할 때 구조체 인스턴스가 문자열로 표시됩니다 :이 분명하지
["#<struct id=1, car='red'>", "#<struct id=2, car='yellow'>", "#<struct id=3, car='green'>"]
require 'json'
array = [#<struct id=1, car='red'>, #<struct id=2, car='yellow'>, #<struct id=3, car='green'>] # assuming real structure code in the array
puts array.to_json
인쇄 당신이 원하는.
다음 논리적 단계는 구조체 인스턴스를 JSON으로 올바르게 직렬화하고 JSON에서 다시 만들 수 있는지 확인하는 것입니다. 인쇄
a = [ YourStruct.new(1, 'toy'), YourStruct.new(2, 'test')]
puts a.to_json
이
[{"id": 1,"car":"toy"},{"id": 2,"car":"test"}]
또한이 역 직렬화 :
YourStruct = Struct.new(:id, :car)
class YourStruct
def to_json(*a)
{:id => self.id, :car => self.car}.to_json(*a)
end
def self.json_create(o)
new(o['id'], o['car'])
end
end
그래서 당신은 이제 다음을 작성할 수 있습니다 :이 작업을 수행하려면
당신은 당신의 구조의 선언을 변경할 수 있습니다 JSON :
YourStruct.json_create(JSON.parse('{"id": 1,"car":"toy"}'))
# => #<struct YourStruct id=1, car="toy">
원하는 출력이 유효한 json이 아닙니다. 배열이란 뜻이야? [...] – tokland