Parcourir la source

Update wechat.class.php

使用官方的json_encode
HeTao il y a 2 ans
Parent
commit
38f8c2e945
1 fichiers modifiés avec 1 ajouts et 42 suppressions
  1. 1 42
      wechat.class.php

+ 1 - 42
wechat.class.php

@@ -1369,48 +1369,7 @@ class Wechat
 	 * @param array $arr
 	 */
 	static function json_encode($arr) {
-		if (count($arr) == 0) return "[]";
-		$parts = array ();
-		$is_list = false;
-		//Find out if the given array is a numerical array
-		$keys = array_keys ( $arr );
-		$max_length = count ( $arr ) - 1;
-		if (($keys [0] === 0) && ($keys [$max_length] === $max_length )) { //See if the first key is 0 and last key is length - 1
-			$is_list = true;
-			for($i = 0; $i < count ( $keys ); $i ++) { //See if each key correspondes to its position
-				if ($i != $keys [$i]) { //A key fails at position check.
-					$is_list = false; //It is an associative array.
-					break;
-				}
-			}
-		}
-		foreach ( $arr as $key => $value ) {
-			if (is_array ( $value )) { //Custom handling for arrays
-				if ($is_list)
-					$parts [] = self::json_encode ( $value ); /* :RECURSION: */
-				else
-					$parts [] = '"' . $key . '":' . self::json_encode ( $value ); /* :RECURSION: */
-			} else {
-				$str = '';
-				if (! $is_list)
-					$str = '"' . $key . '":';
-				//Custom handling for multiple data types
-				if (!is_string ( $value ) && is_numeric ( $value ) && $value<2000000000)
-					$str .= $value; //Numbers
-				elseif ($value === false)
-				$str .= 'false'; //The booleans
-				elseif ($value === true)
-				$str .= 'true';
-				else
-					$str .= '"' . addslashes ( $value ) . '"'; //All other things
-				// :TODO: Is there any more datatype we should be in the lookout for? (Object?)
-				$parts [] = $str;
-			}
-		}
-		$json = implode ( ',', $parts );
-		if ($is_list)
-			return '[' . $json . ']'; //Return numerical JSON
-		return '{' . $json . '}'; //Return associative JSON
+		return json_encode($arr,JSON_UNESCAPED_UNICODE);
 	}
 
 	/**