2016-11-22 1 views
0

Ich habe ein Objekt, das ich in JSON serialisieren möchte, und ich versuche, das ActiveModel :: Serialization :: JSON-Modul zu verwenden, um dies zu erreichen. Meine Attribute Methode sieht wie folgt aus:Wie Objekt in Ruby-Attribute-Methode (ActiveModel :: Serialization) enthalten?

class MyClass 
include ActiveModel::Serializers::JSON 

def attributes 
{ 
    'attr1' => nil, 
    'attr2' => nil, 
    'object1' => nil, 
    'object2' => nil 
} 
end 

Das funktioniert gut, bis ich versuchen JSON.parse(myclass_instance.as_json.to_s) zu laufen; Ich erhalte diese Störung auf die internen Objekte in MyClass bezogen werden:

JSON::ParserError: 757: unexpected token at '{"object1"=>#<MyClass::object1_field1>...}' 

Wie kann ich meine internen Objekte in der Attribute-Methode angeben, so dass dies nicht geschieht?

Antwort

1

Die as_json Funktion ist speziell, es gibt zurück, was in der JSON-Struktur sein sollte, aber es gibt tatsächlich nicht JSON zurück.

Was Sie wollen, ist dies:

JSON.parse(instance.to_json) 

Werfen Sie einen Blick auf, was as_json aussendet.

+0

Danke! Das hat den Trick gemacht! – Tino

Verwandte Themen