PHP JSON 封装

简介:
Java代码   收藏代码
  1. public function printJson($data, $jsonCallBack = '', $fromCode = "UTF-8")  
  2. {  
  3.     mb_convert_variables("UTF8", $fromCode, $data);  
  4.     //ajax通过设置Access-Control-Allow-Origin来实现跨域访问比较简单.指定允许其他域名访问  
  5.     header('Access-Control-Allow-Origin:*');  
  6.     header("Cache-Control: no-cache, no-store, must-revalidate, max-age=-1");  
  7.     header("Content-Type: application/json; charset=utf-8");  
  8.     $outPut = function_exists('json_encode') ? json_encode($data) : CJSON::encode($data);  
  9.     if ('' != $jsonCallBack) {  
  10.         $outPut = $jsonCallBack . '(' . $outPut . ')';  
  11.     }  
  12.     echo $outPut;  
  13.     Yii::app()->end();  
  14. }  
  如果json字符串的key缺少双引括起来,则json_decode会失败,判断是否存在缺少双引括起来的key,如缺少则先用正则替换为"key",再进行json_decode操作
Java代码   收藏代码
  1. <?php  
  2. /** 兼容key没有双引括起来的JSON字符串解析 
  3. * @param String $str JSON字符串 
  4. * @param boolean $mod true:Array,false:Object 
  5. * @return Array/Object 
  6. */  
  7. function ext_json_decode($str, $mode=false){  
  8.   if(preg_match('/\w:/', $str)){  
  9.     $str = preg_replace('/(\w+):/is''"$1":', $str);  
  10.   }  
  11.   return json_decode($str, $mode);  
  12. }  
  13.    
  14. $str1 = '{name:"fdipzone"}';  
  15. var_dump(ext_json_decode($str1, true)); // array(1) { ["name"]=> string(8) "fdipzone" }  
  16. ?>  
  Json只支持 utf-8 编码,所有用header 
Java代码   收藏代码
  1. <?php  
  2. /************************************************************** 
  3.  * 
  4.  * 使用特定function对数组中所有元素做处理 
  5.  * @param    string    &$array        要处理的字符串 
  6.  * @param    string    $function    要执行的函数 
  7.  * @return boolean    $apply_to_keys_also        是否也应用到key上 
  8.  * @access public 
  9.  * 
  10.  *************************************************************/  
  11. function arrayRecursive(&$array, $function, $apply_to_keys_also = false) {  
  12.     static $recursive_counter = 0;  
  13.     if (++$recursive_counter > 1000) {  
  14.         die('possible deep recursion attack');  
  15.     }  
  16.     foreach ($array as $key => $value) {  
  17.         if (is_array($value)) {  
  18.             arrayRecursive($array[$key], $function, $apply_to_keys_also);  
  19.         } else {  
  20.             $array[$key] = $function($value);  
  21.         }  
  22.   
  23.         if ($apply_to_keys_also && is_string($key)) {  
  24.             $new_key = $function($key);  
  25.             if ($new_key != $key) {  
  26.                 $array[$new_key] = $array[$key];  
  27.                 unset($array[$key]);  
  28.             }  
  29.         }  
  30.     }  
  31.     $recursive_counter--;  
  32. }  
  33.   
  34. /************************************************************** 
  35.  * 
  36.  * 将数组转换为JSON字符串(兼容中文) 
  37.  * @param    array    $array        要转换的数组 
  38.  * @return string        转换得到的json字符串 
  39.  * @access public 
  40.  * 
  41.  *************************************************************/  
  42. function JSON($array) {  
  43.     arrayRecursive($array, 'urlencode'true);  
  44.     $json = json_encode($array);  
  45.     return urldecode($json);  
  46. }  
  47. $array = array(  
  48.     'Name' => '希亚',  
  49.     'Age' => 20  
  50. );  
  51. header("Cache-Control: no-cache, no-store, must-revalidate, max-age=-1");  
  52. header("Content-Type: application/json; charset=utf-8");  
  53. echo JSON($array);  
  54. echo "<br/>";  
  55. print_r(json_decode(JSON($array)));  
  56.   
  57. echo "<br/>------default------<br/>";  
  58. $tt = json_encode($array);  
  59. print_r($tt);  
  60. echo "<br/>";  
  61. exit(json_decode($tt));  
  62. ?>  

{"Name":"希亚","Age":"20"}
stdClass Object ( [Name] => 希亚 [Age] => 20 ) 
------default------
{"Name":"\u5e0c\u4e9a","Age":20}
stdClass Object ( [Name] => 希亚 [Age] => 20 )

打印json_decode结果  json_decode加了true参数会返回关联数组,否则出现stdClass Object对象

相关文章
|
7月前
|
JSON PHP 数据格式
|
1月前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
2月前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
7月前
|
JSON Java 数据安全/隐私保护
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
555 1
|
7月前
|
PHP 开发者
【专栏】介绍PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制
【4月更文挑战第27天】本文介绍了PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制。命名空间的作用包括:防止大型项目中的命名冲突,提升代码可读性和可维护性,以及方便代码重用。文章详细阐述了如何定义、导入命名空间,使用完全限定名称以及设置命名空间别名。通过实例展示了命名空间在项目模块划分和第三方库如Laravel中的应用,强调了命名空间在组织和管理PHP代码中的关键作用。
65 4
|
4月前
|
JSON 前端开发 JavaScript
php中JSON或数组到formData的键值对转换
转换JSON或数组到formData格式的键值对并不复杂。PHP的 `json_decode()`与 `http_build_query()`是实现这一转换过程的关键函数。理解这个转换过程对于开发中处理各种AJAX请求时调整数据格式至关重要。这样,无论是处理来自客户端的JSON字符串,还是服务器端的数组数据,都能够灵活地转换为适合网络传输的格式,确保数据交换的顺畅和高效。
99 4
|
5月前
|
Serverless PHP
【PHP常用函数封装】 php 判断两个数组所有的值是否是完全相等
【PHP常用函数封装】 php 判断两个数组所有的值是否是完全相等
43 3
|
5月前
|
Serverless PHP
【PHP常用函数封装】 php 判断a数组里是否完全包含b数组
【PHP常用函数封装】 php 判断a数组里是否完全包含b数组
32 1
|
5月前
|
JSON Java fastjson
Spring Boot返回Json数据及数据封装
本文详细介绍了如何在Spring Boot项目中处理JSON数据的传输 Spring Boot默认使用Jackson作为JSON处理器,并通过`spring-boot-starter-web`依赖自动包含相关组件。文章还展示了如何配置Jackson处理null值,使其转换为空字符串。此外,文章比较了Jackson和FastJson的特点,并提供了FastJson的配置示例,展示了如何处理null值以适应不同应用场景。
|
6月前
|
JSON PHP 数据格式
蓝易云 - PHP用CURL发送Content-type为application/json的POST请求方法
在这段代码中,我们首先创建了一个包含我们要发送的数据的数组,并使用 `json_encode`函数将其转换为JSON格式。然后,我们初始化了一个cURL会话,并设置了一些选项,包括POST请求方法、要发送的数据、返回结果和HTTP头部信息。最后,我们执行了cURL请求并关闭了会话。
154 2