Patch for ticket #329

4 views
Skip to first unread message

Niek Kouwenberg

unread,
Feb 22, 2010, 8:00:42 AM2/22/10
to moch...@googlegroups.com
MochiKit.Base.serializeJSON fails for objects with a 'length' property

This method used an 'is array like'-like check, instead of a strict 'is array' check. The provided patch replaces the if-statement with the isArray checks as implemented in Prototype.js and jQuery. This does not break existing functionality, but prevents the errors for objects with a lenght property. These are now correctly added to the JSON string as objects.
329.patch

Per Cederberg

unread,
Feb 22, 2010, 8:36:09 AM2/22/10
to MochiKit
I think the proper type check would be better written as "o instanceof Array".

Also, previously we've been very cautious with breaking backwards
compatibility. The existing code supports JSON-serialization of
array-like structures, something that wouldn't be supported by the new
code. Perhaps we could just recommended native JSON.stringify() for
most cases:

https://developer.mozilla.org/En/Using_native_JSON

So, the question is if we should switch to strict JSON in the
serializeJSON() method? Or just deprecate our version now that all
major browers support JSON.stringify(). Any opinions on the list?

Cheers,

/Per

> --
> You received this message because you are subscribed to the Google Groups
> "MochiKit" group.
> To post to this group, send email to moch...@googlegroups.com.
> To unsubscribe from this group, send email to
> mochikit+u...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/mochikit?hl=en.
>

Niek Kouwenberg

unread,
Feb 22, 2010, 9:47:56 AM2/22/10
to moch...@googlegroups.com
I see.

In that case we can just try to serialize the JSON string for an array-like object, and on failure (incorrect length property) fallback to the object-like serialization.

A simple try-catch will fix this. I've attached a different patch which is backward compatible and fixes this bug.
329_2.patch
Reply all
Reply to author
Forward
0 new messages