2009/2/25 SWilk <wilkola...@gmail.com>:
>
> kangax wrote:
>> On Feb 25, 3:27 am, SWilk <wilkola...@gmail.com> 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!"

--~--~---------~--~----~------------~-------~--~----~
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 prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to