php json转换成数组形式代码分享

写的json转换成数组的一个类和方法,实际上写的方法可以把大部分包含json字符串的数据结构转换成数组,上代码:

代码如下:

class antiTranJson
{
  protected  static function jsonToArray($json)
  {
    if(!is_string($json) || is_null(json_decode($json, true)))
      throw new NotJsonStringException('param is not a json string');
    $deJson = json_decode($json, true);
    return self::toArray($deJson);
  }

protected  static function stdClassToArray($stds)
  {
    if(is_object($stds))
      throw new NotObjectException('params not object');
    $params = get_object_vars($stds);
    return self::toArray($params);
  }

protected  static function arrayRToArray($params)
  {
    $tmp = array();
    if(!is_array($params))
      throw new NotArrayException('params not array');
    foreach($params as $k=>$v)
    {
      $tmp[$k] = self::toArray($v);
    }
    //var_dump($tmp);
    return $tmp;
  }

//调用这个方法,包含json的数据均可以被转换
  public static function toArray($params)
  {
    $tmp = array();
    if(is_string($params) && !is_null(json_decode($params)))
      $tmp = self::jsonToArray($params);
    elseif(is_array($params))
      $tmp = self::arrayRToArray($params);
    //这里注意一下,假如$params 是一个对象,只有包含的属性是可读取(public或者临时的对象属性)的时候才能实现转换
    elseif(is_object($params))
      $tmp = self::stdClassToArray($params);
    else
      $tmp = $params;
    return $tmp;
  }

以上就是相关代码,至少目前用的时候还是可以得,如果各位有好的建议,希望大家讨论讨论,共同进步,谢谢

(0)

相关推荐

  • PHP数据集构建JSON格式及新数组的方法

    自己写了个PHP结果集转换成JSON格式的函数,可以直接调用: 复制代码 代码如下: function RecordToJson($recordset) { $jstr='['; while($rs = $recordset->Fetch()) { //$nick = iconv("GBK",'utf-8',$rs['nick']);/*转换为utf-8编码*/ //TODO:遍历结果集 $arr_keys=array_keys($rs); $jstr=$jstr.'{'; fo

  • PHP封装返回Ajax字符串和JSON数组的方法

    实例如下: <?php class DBDA { public $host="localhost"; public $uid = "root"; public $pwd = "123"; public $dbname = "mydb"; //成员方法 public function Query($sql,$type=1) { $db = new MySQLi($this->host,$this->uid,$t

  • php简单构造json多维数组的方法示例

    本文实例讲述了php简单构造json多维数组的方法.分享给大家供大家参考,具体如下: php构造json多维数组其实很简单 下面列举了将mysqli的查询结果数组序列化为json的php代码如下 $res['result'] = "ok"; $res['msg'] = 'login'; $res['fileinfo'] = array(); while($stmt->fetch()){ $fileinfo['fileid'] = $fileid; $fileinfo['name'

  • php数组转换js数组操作及json_encode的用法详解

    对于php,个人感觉能够熟练操作数组和字符串,基本上已经是入门了,php本身有很多操作数组和字符串的函数,今天在做一个功能时,需要用Js动态的创建门店信息,这些信息是要从后台添加的,想来想去,通过php读取数据库,得到数组,然后将数组转化成符合需求js数组,php数组形式为: 复制代码 代码如下: $newArray = array(array('地区'=>'北京地区','items'=>'10','detail'=>array(0=>array('店名'=>'旗舰店','u

  • 在PHP语言中使用JSON和将json还原成数组的方法

    在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码. 一.json_encode() <?php $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?> 输出 {"a&

  • 深入理解PHP JSON数组与对象

    在PHP后端和客户端数据交互的过程中,JSON数据中有时格式不定,一会儿是数组,一会儿是对象,弄得客户端开发人员要崩溃的感觉. 因此,前后端相关人员先对PHP的json_encode函数原理有必要的了解是最重要的一个环节. PHP中的array是个万能的数据结构,并不像其它语言根据需要的场景会定义很多约束性的数据类型来描述结构,所以PHP程序员是很难给客户端人员讲清楚返回的是什么结构的数据的. 也就变成明明是通过PHP的数组数据编码成json的,但输出值有时是数组.有时是对象的情况. <?php

  • php实现数组中索引关联数据转换成json对象的方法

    本文实例讲述了php实现数组中索引关联数据转换成json对象的方法.分享给大家供大家参考.具体实现方法如下: public static function encode(&$var) { return '{'.implode(',',self::encodeExcute($var)).'}'; } private static function encodeExcute(&$var) { $json = array(); switch (gettype($var)) { case 'arr

  • php数组转成json格式的方法

    本文实例讲述了php数组转成json格式的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: function array_to_json( $array ){     if( !is_array( $array ) ){         return false;     }     $associative = count( array_diff( array_keys($array), array_keys( array_keys( $array )) ));     i

  • php利用嵌套数组拼接与解析json的方法

    利用嵌套数组   拼接混合json -包含对象数组 <?php // 自 PHP 5.4 起 $array = [ "status" => "0", "message" => "ok", "arr"=> [] ]; class Person { public $name; public $age; //定义一个构造方法初始化赋值 public function __construct

  • PHP使用JSON和将json还原成数组

    在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码. 一.json_encode() 复制代码 代码如下: <?php $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?> 输

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

    首先下载下面这个文件(这是一段是别人写出来专门解析json的代码),然后引入这个文件! http://pan.baidu.com/s/1dD8qVr7 现在当我们需要用ajax与后台进行交互时,怎样将php的数组传送到js文件并且并js所识别? 先看php文件,当我们获取到$arr这个数组后 foreach ($arr as $value) { $json .= json_encode($value) . ','; } echo '[' . substr($json,0,strlen($json

随机推荐