Sammeln von Hashes in OpenStruct erstellt "Tabelle" -Eintrag

9

Warum dies (in Rails-Konsole ausgewertet)

%Vor%

fügt dort einen "Tabellen" ein?

%Vor%

Ich will nur das:

%Vor%

Bedeutet das, dass Rails to_json-Methode OpenStruct auf andere Weise behandelt? Wenn ich es im Irb versuche, ist es nicht da:

%Vor%     
lzap 20.10.2011, 11:10
quelle

5 Antworten

13

Verwenden Sie marshal_dump , obwohl dies den Zweck der vorherigen Umwandlung in OpenStruct etwas zunichte macht:

%Vor%

Der kürzere Weg wäre:

%Vor%

Alternativ könntest du auch monecy patch OpenStruct#as_json wie in Hiroshi's Antwort gezeigt:

%Vor%     
Matt 20.10.2011, 11:23
quelle
23

Weil @table eine Instanzvariable von OpenStruct ist und Objekt # as_json gibt den Hash der Instanzvariablen zurück .

In meinem Projekt habe ich OpenStruct # as_json implementiert, um das Verhalten zu überschreiben.

%Vor%     
hiroshi 08.12.2012 13:08
quelle
8

Ich komme um das Problem herum, indem ich OpenStruct wie folgt untergliedere:

%Vor%

Dann können Sie einfach wie folgt in JSON konvertieren:

%Vor%

Ordentlich, nicht wahr? Als Antwort auf Ihre Frage schreiben Sie stattdessen Folgendes:

%Vor%

geben Ihnen:

%Vor%     
Kevin Hutchinson 14.11.2014 05:28
quelle
4

Mit Ruby 2.1.2 können Sie Folgendes verwenden, um JSON ohne das Tabellenstammelement zu erhalten:

%Vor%     
Blake 18.07.2014 18:16
quelle
2

Ich fand die anderen Antworten etwas verwirrend, als ich hier landete, um herauszufinden, wie ich mein OpenStruct in ein Hash oder JSON verwandeln konnte. Um dies zu verdeutlichen, kannst du einfach marshal_dump auf deinem OpenStruct aufrufen.

%Vor%

Ich persönlich wäre zögerlich gegenüber affe-patch OpenStruct , es sei denn, du tust es in einer Unterklasse, da es unbeabsichtigte Konsequenzen haben könnte.

    
steve.hanson 15.04.2016 17:24
quelle

Tags und Links