2008/12/16 Scott MacVicar <sc...@macvicar.net>:
> Richard Quadling wrote:
>> 2008/12/15 mike <mike...@gmail.com>:
>>> On Mon, Dec 15, 2008 at 9:50 AM, Rasmus Lerdorf <ras...@lerdorf.com> wrote:
>>>
>>>> 1. Document the fact that if you want to strictly conform to the JSON
>>>>   spec and be sure your json_encode output will work in various JSON
>>>>   parsers, you have to pass it a PHP array or object.
>>> Instead of json_encode(34) the suggestion would be
>>> json_encode(array(34)) ? Seems kind of like a lame thing to require.
>>> IMHO the language should "do the right thing" as far as the consumer
>>> (javascript/JSON parser) is concerned. However, Douglas is infinitely
>>> more educated than I am here. This is just my $0.02 as a PHP user.
>>
>> I was one of those that read the PHP dox and not the RFC/standard
>> (http://bugs.php.net/bug.php?id=38680).
>>
>> I would say that having PHP "correct" my mistake is wrong.
>>
>> If I say...
>>
>>  json_encode(34);
>>
>>  I am saying that I expect the result to be ...
>>
>> var i_SomeInt = 34;
>>
>> And from there I would expect to be able to say ...
>>
>> var i_SomeOtherInt = i_SomeInt + 10;
>>
>> This is not going to work if PHP "corrects" my mistake.
>>
>> I'd be perfectly happy for the standard to be enforced and an E_STRICT
>> warning to be raised.
>>
>> If I want to shoot myself then I have to at least take the safety off
>> first - turning off E_STRICT that is.
>>
>> Essentially, I don't like computers guessing my intent. If I don't
>> state it clearly enough then it may be that I don't know what I'm
>> doing.
>>
>> GIMGO (Garbage In, Maybe Garbage Out) isn't a good way to go.
>>
>
> json_encode is NOT javascript encode, you're already shooting yourself
> by miusing the function. The problem I'm talking about here is when
> native browser functions are used to decode the JSON.
>
> var json_resonse = <?php echo json_encode(42); ?>;
> var myfoo = JSON.parse(json_resonse);
>
> The result here is an exception thrown by the browser, if you try and
> use JSON to speak to perl, python or ruby you get a similar error. The
> same applies for the various frameworks out there too.

When I say "expect", it was because the PHP documentation said I could.

I like the option to either have strict encoding as standard or as an
option I can activate myself. Either way, I want to be told if I've
done it wrong.

> For now I'll be leaving it as is and adding a JSON_STRICT_ENCODE
> parameter to the options flag. So you can use
>
> json_encode($var, JSON_STRICT_ENCODE);

+1

Would it be at all possible to have an ini setting json.strict_encode = On

So, my code doesn't change, but I can activate it globally.
Essentially I don't want to shoot myself. I don't want to take the
safety off.
>
> Scott
>



-- 
-----
Richard Quadling
Zend Certified Engineer : http://zend.com/zce.php?c=ZEND002498&r=213474731
"Standing on the shoulders of some very clever giants!"

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to