From bc51a1e9f72d7e94e28282aba36359e9f836af5c Mon Sep 17 00:00:00 2001 From: Scott MacVicar Date: Tue, 17 Mar 2009 23:15:17 +0000 Subject: Add PHP_JSON_FORCE_OBJECT for forcing an object output of an array --- ext/json/json.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'ext/json/json.c') diff --git a/ext/json/json.c b/ext/json/json.c index f035cd147d..33e637ad7e 100644 --- a/ext/json/json.c +++ b/ext/json/json.c @@ -41,6 +41,7 @@ static const char digits[] = "0123456789abcdef"; #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 @@ static PHP_MINIT_FUNCTION(json) 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 @@ static void json_encode_array(smart_str *buf, zval **val, int options TSRMLS_DC) 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; -- cgit v1.2.1