(Dies ist eine Coldfusion-Frage)
Ich habe zwei verschiedene Structs, die dieselben Daten enthalten können oder auch nicht, und ich möchte sehen können, ob sie das tun! My Structs enthält immer einfache Werte (Numbers, Strings oder Booleans), da sie mit DeserializeJSON erstellt werden, also kann dies hoffentlich leicht gemacht werden.
Ich habe Ben Nadels Post hier gefunden, aber das Technik scheint nicht für mich zu arbeiten. Hier ist, was ich bisher versucht habe (einige cfwheels Code dort):
%Vor%Und die Ergebnisse sehen so aus:
%Vor%Wie Sie weiter oben sehen werden, stimmen die Daten in den Structs zwar genau überein, aber sie bestehen den Test Equals () nicht.
Hat jemand anderes dies erfolgreich gemacht?
Hier ist Bens Lösung schnell an meine Bedürfnisse angepasst, Sie können sie weiter anpassen (und sie hoffentlich noch präterieren):
%Vor%In Coldfusion Structures versteckt ist eine praktische kleine Methode namens hashCode (). Beachten Sie, dass dies nicht dokumentiert ist.
%Vor%Sie können dies auch mit der systemeigenen Java-Methode durchführen, die vom CFC übernommen wurde.
%Vor% Hier ist etwas, das ich schnell zusammengeworfen habe. Es gibt Parameter, um zu bestimmen, ob die Werte und Schlüssel zwischen Groß- und Kleinschreibung unterschieden werden sollen. Werfen Sie diese beiden Funktionen ( StructEquals()
, ArrayEquals()
) in eine Art Utilities CFC.
Einschränkung : Funktioniert nicht für Strukturen / Arrays, die Abfragen oder Objekte enthalten.
%Vor%Komponententests für alle Interessierten:
%Vor%Tags und Links java coldfusion cfml railo cfwheels