|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-04-10 04:40 UTC] php at sameprecision dot org
Description:
------------
If a key in an array starts with the null byte, json_encode ignores that key=>value pair.
This seems wrong because json_encode doesn't care about null bytes anywhere in the value (and neither does javascript, about keys or values).
Reproduce code:
---------------
//works as expected:
echo json_encode(array(0,"a\0b"=>1,"\0null-prefixed value"));
echo "\n\n";
//ignores second element whose key begins with null byte:
echo json_encode(array(0,"\0ab"=>1,"\0null-prefixed value"));
Expected result:
----------------
{"0":0,"a\0b":1,"1":"\0null-prefixed value"}
{"0":0,"\0ab":1,"1":"\0null-prefixed value"}
// \0 represents an actual null byte here
Actual result:
--------------
{"0":0,"a\0b":1,"1":"\0null-prefixed value"}
{"0":0,"1":"\0null-prefixed value"}
// \0 represents an actual null byte here
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 13:00:01 2025 UTC |
In /ext/json/json.c line 190: if (key[0] == '\0') { /* Skip protected and private members. */ continue; } Looks like condition should be (key[0] == '\0' && strlen(key)==1)woops if (key[0] == '\0' && keylen == 1) { /* Skip protected and private members. */ continue; }