`
pz9042
  • 浏览: 29819 次
最近访客 更多访客>>
社区版块
存档分类
最新评论

php json的用法

    博客分类:
  • php
阅读更多
php json_encode函数是专门处理php复杂点的数据的,其实本人觉得就是针对字符串和数组的,json_encode有个特点就是不能对gb2312中文进行编码,而且,对utf8编码后,不会产生中文,而是一串奇怪的字符串,这样的数据在前台是很难处理的。唉,这也是中国人学程序的悲哀。当然,这个问题是可以通过其他函数来解决的。现在我们讨论的是json数据对多维数组的处理,假设一个数组是多维的,我们 不大可能一遍遍的去遍历他,以下一个方法非常方便的解决中文和多维的问题:

/**
 * 提供两个方法,旨在解决中文乱码的问题
 * 只对utf8编码有效
 * json_encode 仅对双引号,斜杠,反斜杠转义
 * addslashes 转义单双引号,以及反斜杠
 * addcslashes 转义指定字符或者指定字符范围
*/
  //方法-  
function customJsonEncode($a = false) {
    	if (is_null($a)) return 'null';
    	if ($a === false) return 'false';
    	if ($a === true) return 'true';
    	if (is_scalar($a)) {
        	if (is_float($a)) {
            // Always use "." for floats.
            return floatval(str_replace(",", ".", strval($a)));
        	}
        if (is_string($a)) {
            static $jsonReplaces = array(array("\\", "/", "\n", "\t", "\r", "\b", "\f", '"'), array('\\\\', '\\/', '\\n', '\\t', '\\r', '\\b', '\\f', '\"'));
            return '"' . str_replace($jsonReplaces[0], $jsonReplaces[1], $a) . '"';
        }else{
            return $a;
        }
    }
    	$isList = true;
    	for ($i = 0, reset($a); $i < count($a); $i++, next($a)) {
        	if (key($a) !== $i) {
            $isList = false;
            break;
        }
    }
    $result = array();
    if ($isList) {
        foreach ($a as $v) $result[] = customJsonEncode($v);
        return '[' . join(',', $result) . ']';
    } else {
        foreach ($a as $k => $v) $result[] = customJsonEncode($k).':'.customJsonEncode($v);
        return '{' . join(',', $result) . '}';
    }
}

// 方法二   不成熟
  		function loop($arr){
		 foreach($arr as $var =>$value){
 			 if(!is_array($value)){
 			  $arr[$var]=urlencode($arr[$var]);
 			 }else{
 			   $arr[$var]=loop($arr[$var]);
 			 }
 		 }  
 		 return $arr;		
  		}
  		function jsonencode($arr){
  		  if(is_array($arr)){
  		   $arr=loop($arr);
  		  }else{
  		  	$arr=addcslashes($arr,'');
  		    $arr=urlencode($arr);
  		  }
  		  $arr=json_encode($arr);
  		  return urldecode($arr);
  		}

第二个方法是本人自己写的,功能差不多了,就差转义下字符了。建议用第一个吧,虽然看不大懂,不过很好用就是了。
分享到:
评论

相关推荐

    php-jsonpatch, PHP的JSON补丁实现.zip

    php-jsonpatch, PHP的JSON补丁实现 面向PHP的 这是在PHP中编写的 JSON补丁的实现。通过 Composer 安装$ composer require php-jsonpatch/php-jsonpatch用法现在,你可以通过可用的Comp

    使用json和服务器php交互的简单实例

    使用json包装数据,采用post的方法向服务器发送php请求并获得返回的数据。

    extjs_php向后台提交json_post的接收方法实例

    extjs_php向后台提交json_post的接收方法实例 php接口json数据用$_post[]方法无效时使用

    php中json_decode()和json_encode()的使用方法.docx

    php中json_decode()和json_encode()的使用方法.docx

    xml转换成json类

    Watson Research Center 开发了一种专门的方法,使用 PHP 进行这种转换。该方法以 XML 字符串数据为输入并将其转换成 JSON 格式的数据输出。这种 PHP 的解决方案有以下几方面的优点: 可以独立模式运行,在命令行...

    ASP中JSON类以及使用方法详解

    网络上找了很多ASP操作JSON类,都没有太详细的,今天找到一个并且改了一下,适合ASP下的手机接口开发。因为ASP中没有像PHP那样的关联数组,所以用这个实现比较方便。

    iOS下json解析工具

    // 如果json有嵌套,即value里有array、object,如果再使用objectFromJSONString,程序可能会报错(测试结果表明: 使用由网络或得到的php/json_encode生成的json时会报错,但使用NSString定义的json字符串时,解析...

    PHP实现json_decode不转义中文的方法

    本文实例讲述了PHP实现json_decode不转义中文的方法。分享给大家供大家参考,具体如下: 默认情况下PHP的 json_decode 方法会把特殊字符进行转义,还会把中文转为Unicode编码形式。 这使得数据库查看文本变得很麻烦...

    php-jsonpatch:PHP 的 JSON 补丁实现

    现在您可以通过可用的 Composer自动加载文件使用 JSON Patch for PHP。 补丁操作在 JSON 中定义并捆绑在一个数组中。 可用的 JSON Patch有add 、 remove 、 replace 、 move 、 copy和test ; 如果未设置其强制属性...

    如何在PHP语言中用法JSON_.docx

    如何在PHP语言中用法JSON_.docx

    php-json-schema:具有基于JSON模式的验证的高清晰度PHP结构

    可以使用json-schema或扩展Swaggest\JsonSchema\Structure\ClassStructure PHP类来完成结构定义 根据给定的模式验证JSON数据 定义你的json模式 $ schemaJson = &lt;&lt;&lt;'JSON' { "type": "object", ...

    json2php:将JSON转换为PHP表示形式

    要安装json2php,您可以从Github克隆项目或使用NPM进行安装。 $ npm install json2php 用法 将JavaScript对象/数组/字符串/数字转换为相应PHP表示形式的字符串。 细绳 当内容只是一个字符串时,输出将是相同的字符...

    jQuery Ajax前后端使用JSON进行交互示例

    本篇文章主要介绍了jQuery Ajax前后端使用JSON进行交互示例,实现前端通过jQuery Ajax传输json到后端,后端接收json,对json进行处理,后端返回一个json给前端,有兴趣的可以了解一下。

    JSON用法之将PHP数组转JS数组,JS如何接收PHP数组

    主要介绍了JSON用法之将PHP数组转JS数组,JS如何接收PHP数组的相关资料,需要的朋友可以参考下

    ASP.NET接口请求返回解析整合json工具源码

    1、开发环境为Visual Studio 2010,无数据库,使用.net 4.0开发。 操作如下: 1、请写地址,格式例如:http://192.168.10.49/api.php/user/login 2、请写参数,格式例如:mobile=15879104925&password=123456 3、...

    jsonstreamingparser:PHP中的JSON流解析器实现

    安装要安装JsonStreamingParser您可以克隆此存储库,也可以使用composer composer require salsify/json-streaming-parser用法要使用JsonStreamingParser您只需实现\JsonStreamingParser\Listener接口。 然后,您将...

    jsv4-php, PHP的( 强制) JSON架构v4验证器.zip

    jsv4-php, PHP的( 强制) JSON架构v4验证器 jsv4-php用于PHP的( 强制) JSON架构v4验证器jsv4-php 是一个数据验证器,使用版本 4 JSON模式。从代码中只包含 jsv4.php,并使用它定义的Jsv4 类上的static ...使用方法: Jsv

    Ajax异步请求JSon数据(图文详解)

    上一篇讲了Ajax请求数据text类型,text和html都是处理比较简答的数据,而在编程过程中使用Ajax调用数据的时候,难免要进行逻辑的处理,接受的数据也变的复杂比如数组类型的数据,这时候就需要使用JSON数据类型进行...

    PHP的Json中文处理解决方案

    解决中文的一种方法就是先将中文转换为另一种编码格式,然后再使用json_encode(),最后再用解码把json串进行解码。还有一种方式就在php新版本中得到了解决,在下面的代码为展示。 以下为代码示例 &lt;?php head

    php使用json_encode对变量json编码

    对于 PHP 来说,通常使用 json_encode 方法将一个 PHP 组数,转换成前端可以解析的 json 字符串,这也是 PHP 手册上描述的内容,但事实是这样的吗?看看下面这段代码:复制代码 代码如下:$a = array( ‘Jack’ , ...

Global site tag (gtag.js) - Google Analytics