scottmac Tue Mar 17 23:15:41 2009 UTC Modified files: (Branch: PHP_5_3) /php-src/ext/json json.c /php-src/ext/json/tests 002.phpt Log: MFH Add PHP_JSON_FORCE_OBJECT for forcing an object output of an array http://cvs.php.net/viewvc.cgi/php-src/ext/json/json.c?r1=1.9.2.19.2.17&r2=1.9.2.19.2.18&diff_format=u Index: php-src/ext/json/json.c diff -u php-src/ext/json/json.c:1.9.2.19.2.17 php-src/ext/json/json.c:1.9.2.19.2.18 --- php-src/ext/json/json.c:1.9.2.19.2.17 Wed Dec 31 11:15:38 2008 +++ php-src/ext/json/json.c Tue Mar 17 23:15:40 2009 @@ -16,7 +16,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: json.c,v 1.9.2.19.2.17 2008/12/31 11:15:38 sebastian Exp $ */ +/* $Id: json.c,v 1.9.2.19.2.18 2009/03/17 23:15:40 scottmac Exp $ */ #ifdef HAVE_CONFIG_H #include "config.h" @@ -41,6 +41,7 @@ #define PHP_JSON_HEX_AMP (1<<1) #define PHP_JSON_HEX_APOS (1<<2) #define PHP_JSON_HEX_QUOT (1<<3) +#define PHP_JSON_FORCE_OBJECT (1<<4) ZEND_DECLARE_MODULE_GLOBALS(json) @@ -75,6 +76,7 @@ REGISTER_LONG_CONSTANT("JSON_HEX_AMP", PHP_JSON_HEX_AMP, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("JSON_HEX_APOS", PHP_JSON_HEX_APOS, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("JSON_HEX_QUOT", PHP_JSON_HEX_QUOT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("JSON_FORCE_OBJECT", PHP_JSON_FORCE_OBJECT, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("JSON_ERROR_NONE", PHP_JSON_ERROR_NONE, CONST_CS | CONST_PERSISTENT); REGISTER_LONG_CONSTANT("JSON_ERROR_DEPTH", PHP_JSON_ERROR_DEPTH, CONST_CS | CONST_PERSISTENT); @@ -174,7 +176,7 @@ if (Z_TYPE_PP(val) == IS_ARRAY) { myht = HASH_OF(*val); - r = json_determine_array_type(val TSRMLS_CC); + r = (options & PHP_JSON_FORCE_OBJECT) ? 1 : json_determine_array_type(val TSRMLS_CC); } else { myht = Z_OBJPROP_PP(val); r = 1; http://cvs.php.net/viewvc.cgi/php-src/ext/json/tests/002.phpt?r1=1.1.2.3&r2=1.1.2.3.2.1&diff_format=u Index: php-src/ext/json/tests/002.phpt diff -u php-src/ext/json/tests/002.phpt:1.1.2.3 php-src/ext/json/tests/002.phpt:1.1.2.3.2.1 --- php-src/ext/json/tests/002.phpt:1.1.2.3 Thu Apr 12 19:40:38 2007 +++ php-src/ext/json/tests/002.phpt Tue Mar 17 23:15:40 2009 @@ -8,8 +8,14 @@ var_dump(json_encode("")); var_dump(json_encode(NULL)); var_dump(json_encode(TRUE)); + var_dump(json_encode(array(""=>""))); var_dump(json_encode(array(array(1)))); +var_dump(json_encode(array())); + +var_dump(json_encode(array(""=>""), JSON_FORCE_OBJECT)); +var_dump(json_encode(array(array(1)), JSON_FORCE_OBJECT)); +var_dump(json_encode(array(), JSON_FORCE_OBJECT)); var_dump(json_encode(1)); var_dump(json_encode("ÑÑÑÑиÑ")); @@ -23,6 +29,10 @@ string(4) "true" string(7) "{"":""}" string(5) "[[1]]" +string(2) "[]" +string(7) "{"":""}" +string(13) "{"0":{"0":1}}" +string(2) "{}" string(1) "1" string(38) ""\u0440\u0443\u0441\u0441\u0438\u0448"" Done
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php