2009/3/18 Richard Quadling <[email protected]>: > 2009/2/25 SWilk <[email protected]>: >> >> kangax wrote: >>> On Feb 25, 3:27 am, SWilk <[email protected]> wrote: >>> [...] >>>> It's not that Richard does want to use it. It's that the PHP >>>> json_encode() function produces inconsistent output for empty arrays. >>>> >>>> If you do >>>> json_encode(array('key' => 'value'); >>>> you will get: >>>> { key: value }; >>> >>> And I assume that `json_encode(array('a', 'b', 'c'))` returns `["a", >>> "b", "c"]`? >> That's right. >>> >>> [...] >>> >>>> I think in most cases: >>>> var _a=[]; >>>> _a = (Object.isArray(_a) && !_a.length) ? {} : _a; >>>> var hash = $H(_a); >>> >>> That should work, but wouldn't you want to differentiate between these >>> "broken" arrays (which should really be empty objects) and the actual >>> empty arrays (returned from json)? >> >> That depends on the backend of course. >> For me, this would be rarely (if ever) a problem, cause I am trying >> to keep my returned types consistent. >> If I return an associative array from my backend, then it should be >> always associative array. And I would always expect plain Object in >> json response. I this case that workaround works. >> If I return numerically indexed array, then it should always be so, >> and then I always expect native Array in the response. In this case I >> would use $A instead of $H anyway, so no workaround is needed. >> >> Of course there might be persons who mix those types and return array >> of objects when found many, and just the object, when found one. I >> have no idea how to distinguish such cases... But this would require >> extra js logic anyway, so I think it would not be a problem. >> >> I agree with Richard, that there should be a warning for php users in >> the docs, and a sample snippet of js code providing a way to avoid >> accidental passing of empty Array to $H. >> >> I'll try to write some info covering this on proto-scripty.wikidot.com >> tonight. It might be of some help to many. >> >> If you have any better idea how to avoid this problem, >> let us know. >> >> Regards, >> SWilk >> >> >> >> > > PHP 5.3 has just had a mod done to force json_encode() to output an > object hash. Currently it will output an array or an object hash > depending upon the array content. > > The PHP manual will be updated later on today. > > http://docs.php.net/json_encode > > So, my issue is fixed. It would be useful to have something documented > in the Prototype manual also. This fix in PHP will ONLY be for PHP > V5.3.0 and above. RC1 of PHP5.3.0 is coming soon. > > Obviously, getting this out to the ISPs will take time (these things always > do). > > Regards, > > Richard Quadling. > > -- > ----- > Richard Quadling > Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 > "Standing on the shoulders of some very clever giants!" >
PHP manual updated. Will be live by tomorrow. -- ----- Richard Quadling Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731 "Standing on the shoulders of some very clever giants!" --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---
