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对象

相关文章
|
6月前
|
JSON 定位技术 PHP
PHP技巧:解析JSON及提取数据
这就是在PHP世界里探索JSON数据的艺术。这场狩猎不仅仅是为了获得数据,而是一种透彻理解数据结构的行动,让数据在你的编码海洋中畅游。通过这次冒险,你已经掌握了打开数据宝箱的钥匙。紧握它,让你在编程世界中随心所欲地航行。
228 67
|
9月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot返回Json数据及数据封装——封装统一返回的数据结构
本文介绍了在Spring Boot中封装统一返回的数据结构的方法。通过定义一个泛型类`JsonResult&lt;T&gt;`,包含数据、状态码和提示信息三个属性,满足不同场景下的JSON返回需求。例如,无数据返回时可设置默认状态码&quot;0&quot;和消息&quot;操作成功!&quot;,有数据返回时也可自定义状态码和消息。同时,文章展示了如何在Controller中使用该结构,通过具体示例(如用户信息、列表和Map)说明其灵活性与便捷性。最后总结了Spring Boot中JSON数据返回的配置与实际项目中的应用技巧。
714 0
|
5月前
|
JSON Java 数据格式
Spring Boot返回Json数据及数据封装
在Spring Boot中,接口间及前后端的数据传输通常使用JSON格式。通过@RestController注解,可轻松实现Controller返回JSON数据。该注解是Spring Boot新增的组合注解,结合了@Controller和@ResponseBody的功能,默认将返回值转换为JSON格式。Spring Boot底层默认采用Jackson作为JSON解析框架,并通过spring-boot-starter-json依赖集成了相关库,包括jackson-databind、jackson-datatype-jdk8等常用模块,简化了开发者对依赖的手动管理。
560 3
|
JSON Java 数据安全/隐私保护
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
java中的http请求的封装(GET、POST、form表单、JSON形式、SIGN加密形式)
1094 1
|
PHP 开发者
【专栏】介绍PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制
【4月更文挑战第27天】本文介绍了PHP的命名空间,它是一个用于封装代码、避免名称冲突的机制。命名空间的作用包括:防止大型项目中的命名冲突,提升代码可读性和可维护性,以及方便代码重用。文章详细阐述了如何定义、导入命名空间,使用完全限定名称以及设置命名空间别名。通过实例展示了命名空间在项目模块划分和第三方库如Laravel中的应用,强调了命名空间在组织和管理PHP代码中的关键作用。
193 4
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
JSON 前端开发 JavaScript
php中JSON或数组到formData的键值对转换
转换JSON或数组到formData格式的键值对并不复杂。PHP的 `json_decode()`与 `http_build_query()`是实现这一转换过程的关键函数。理解这个转换过程对于开发中处理各种AJAX请求时调整数据格式至关重要。这样,无论是处理来自客户端的JSON字符串,还是服务器端的数组数据,都能够灵活地转换为适合网络传输的格式,确保数据交换的顺畅和高效。
282 4
|
Serverless PHP
【PHP常用函数封装】 php 判断两个数组所有的值是否是完全相等
【PHP常用函数封装】 php 判断两个数组所有的值是否是完全相等
126 3