In the example I do both a toString() comparison and an Object comparison to show that it doesn't work. The problem is that in the current setup is as follows:
JSONObject j = new JSONObject("{a:a, b:b}"); JSONObject j = new JSONObject("{b:b, a:a}"); There's no easy way to find out these are functionally equivalent. The toString() methods of those objects will return them with the properties in that order and as such will not be equal. Calling .equals on the JSONObjects won't work either because it calls Object.equals which is false. On Fri, Jun 05, 2009 at 12:16:13PM -0500, John Crawford wrote: > Well in you're example you used toString() before comparing. > > Sent from my iPhone > > On Jun 5, 2009, at 12:14 PM, "D. Stuart Freeman" > <stuart.free...@et.gatech.edu> wrote: > >> I just realized this is because JSONObject doesn't override equals. >> Maybe it should? >> >> On Fri, Jun 05, 2009 at 01:10:30PM -0400, D. Stuart Freeman wrote: >>> Should it hold that if we have two JSONObjects, j and k, that if >>> j.toString().equals(k.toString()) then j.equals(k)? I ask because >>> I've >>> found that it's possible to create JSONObjects where that isn't the >>> case. >>> Here's a quick, minimal example I worked up: >>> http://pastebin.com/f12de25b9 >>> >>> -- >>> D. Stuart Freeman >>> Georgia Institute of Technology >> >> >> >> -- >> D. Stuart Freeman >> Georgia Institute of Technology -- D. Stuart Freeman Georgia Institute of Technology
signature.asc
Description: Digital signature