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.
So funktioniert es:
grails.converters.JSON
ist Teil von Grails converters
plugin. asType
effektiv in ConvertersApi , das sicherstellt, dass der Konverter (in diesem Fall JSON) basierend auf dem Anwendungskontext instanziiert wird. target
wird auf den Konverter gesetzt. Ziel ist der Delegat (in Ihrem Beispiel die Liste mit einem Element [[a:1]]
) JSONObject
oder ein JSONArray
zu konvertieren, ohne sich darum zu kümmern, was das Ziel ist. Hier ist, wie es getestet werden kann:
%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. :)