Groovy Unterschiede zwischen 'as' und Casting

8

Mit Grails:

%Vor%

gibt eine andere Sache zurück als

%Vor%

aber beide funktionieren mehr oder weniger wie erwartet, also nehme ich an, dass beide Aufrufe von der JSON-Klasse behandelt werden, aber von verschiedenen Methoden (oder Parametern).

Ich weiß, dass as die Methode asType aufruft, aber was wird aufgerufen, wenn das Casting aufgerufen wird?

BEARBEITEN:

Ich dachte zunächst, es wäre nicht relevant, aber der Vollständigkeit halber kehrt das "as" zurück %Vor%

während das Casting zurückkehrt

%Vor%

Wenn die Liste mehr als ein Element enthält, gibt beides dasselbe zurück. In beiden Fällen geben beide Methoden ein Objekt zurück, dessen Klasse grails.converters.JSON lautet.

Wenn es einen Wert hinzufügt, habe ich mit Grails 2.2.4 versucht.

    
Deigote 21.10.2013, 12:05
quelle

2 Antworten

4

So funktioniert es:

  • grails.converters.JSON ist Teil von Grails converters plugin.
  • Der Wendepunkt, es verwendet Groovys asType effektiv in ConvertersApi , das sicherstellt, dass der Konverter (in diesem Fall JSON) basierend auf dem Anwendungskontext instanziiert wird.
  • Und ein target wird auf den Konverter gesetzt. Ziel ist der Delegat (in Ihrem Beispiel die Liste mit einem Element [[a:1]] )
  • Der einzige Unterschied, den Sie sehen, wenn Sie die Sammlung manuell eingeben, ist, dass das Ziel im Konverter nicht festgelegt ist . Daher ein fehlender Link während der Konvertierung.
  • Basierend auf den Grundlagen des Konverters versucht es, die Sammlung selbst in ein JSONObject oder ein JSONArray zu konvertieren, ohne sich darum zu kümmern, was das Ziel ist.

Hier ist, wie es getestet werden kann:

%Vor%     
dmahapatro 25.10.2013 17:52
quelle
1
%Vor%

Dies ist ein Handle von Grails-Converters Plugin (d. h. ConvertersGrailsPlugin.groovy), dessen Ziel es ist, Ihre Domain-Objekte, Maps und Listen sehr schnell in JSON oder XML umzuwandeln, um die Entwicklung für AJAX-basierte Anwendungen zu erleichtern. Das Plugin nutzt den groovigen "as" -Operator und erweitert die Render-Methode in Grails-Controllern, um das Ergebnis direkt an den Ausgabestrom zu senden. Es fügt auch den Grails-Codecs-Mechanismus für XML und JSON hinzu. Wo wie:

%Vor%

ist ein Vorgang, bei dem ein JSON-Objekt umgewandelt wird. Ich denke, es wird Ihnen helfen zu verstehen, dass dies zwei verschiedene Aspekte sind und nicht von der JSON-Klasse behandelt werden. :)

    
Yogesh 25.10.2013 13:14
quelle

Tags und Links