加入收藏 | 设为首页 | 会员中心 | 我要投稿 百客网 - 百科网 (https://www.baikewang.cn/)- 智能数字人、图像技术、AI硬件、数据采集、AI开发硬件!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php快速将JSON对象转为数组或对象数组

发布时间:2023-10-19 10:31:55 所属栏目:PHP教程 来源:转载
导读:   这篇“php怎么快速将JSON对象转为数组或对象数组”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读
  这篇“php怎么快速将JSON对象转为数组或对象数组”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php怎么快速将JSON对象转为数组或对象数组”文章吧。
 
  什么是JSON格式?
 
  JSON是JavaScript对象表示法(JavaScript Object Notation)的缩写,它是一种轻量级的数据交换格式。JSON是一种用于交换数据的语言,它是一种键值对的结构,使用人类可读的文本来传输数据。
 
  以下是一个简单的JSON的示例。
 
  {
 
    "name": "bob",
 
    "age": 25,
 
    "address": {
 
      "city": "beijing",
 
      "province": "BJ"
 
    }
 
  }
 
  复制代码
 
  JSON格式的数据由花括号包含,数据以键值对的方式存在,用冒号分割。对于一个JSON对象,它的键必须是一个字符串,键值对使用逗号分隔。在上面的示例中,name,age 和 address 是三个键,对应的值分别是 "bob",25 和另外一个JSON对象。
 
  PHP中解析JSON格式
 
  PHP提供了两个内置的函数用于解析JSON字符串:json_encode()和json_decode()。
 
  json_encode():将PHP数组或对象转换为JSON字符串。
 
  json_decode():将JSON格式的字符串转换成PHP数组或对象。
 
  下面的示例展示了如何使用json_encode()来将一个PHP数组转换成JSON格式的字符串。
 
  $myArr = array('name' => 'Bob', 'age' => 25, 'address' => array('city' => 'beijing', 'province' => 'BJ'));
 
  $jsonStr = json_encode($myArr);
 
  echo $jsonStr; // 输出 {"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}
 
  复制代码
 
  同样,我们可以使用json_decode()函数将JSON格式字符串转换为PHP数组。
 
  $jsonStr = '{"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}';
 
  $myArr = json_decode($jsonStr, true);
 
  print_r($myArr); // Array ( [name] => Bob [age] => 25 [address] => Array ( [city] => beijing [province] => BJ ) )
 
  复制代码
 
  可以发现,json_decode() 函数的返回值是一个PHP数组。如果你想要的是一个PHP对象,可以省略第二个参数,这个时候返回的是PHP对象。如下所示:
 
  $jsonStr = '{"name":"Bob","age":25,"address":{"city":"beijing","province":"BJ"}}';
 
  $myObj = json_decode($jsonStr);
 
  echo $myObj->name; // 输出 Bob
 
  echo $myObj->address->province; // 输出 BJ
 
  复制代码
 
  接下来,本文将介绍如何将一个JSON对象转化成PHP数组或对象数组。
 
  JSON对象转成数组
 
  上面我们已经介绍了如何将JSON格式的字符串转为PHP数组。但是有时候我们会从外部传进来一个JSON对象,需要将它转换成PHP数组才能更方便地进行处理。下面介绍几种常见的方式来实现JSON对象转为PHP数组。
 
  1. 使用 json_decode()
 
  使用 json_decode() 函数同样可以解决这个问题,但是需要传入第二个参数。
 
  $jsonStr = '{ "name": "bob", "age": 25, "address": { "city": "beijing", "province": "BJ" } }';
 
  $jsonObj = json_decode($jsonStr, true);
 
  print_r($jsonObj);
 
  复制代码
 
  输出结果:
 
  Array
 
  (
 
      [name] => bob
 
      [age] => 25
 
      [address] => Array
 
          (
 
              [city] => beijing
 
              [province] => BJ
 
          )
 
  )
 
  复制代码
 
  在这个例子中,json_decode() 函数的第二个参数设置为 true,表示将JSON对象转化成一个PHP数组。
 
  2. 使用强制类型转换
 
  PHP中有一种强制类型转换的方式:将一个对象强制转换成数组。使用这种方式,可以将一个JSON对象快速转换成PHP数组。
 
  $jsonStr = '{ "name": "bob", "age": 25, "address": { "city": "beijing", "province": "BJ" } }';
 
  $jsonObj = json_decode($jsonStr);
 
  $jsonArr = (array)$jsonObj;
 
  print_r($jsonArr);
 
  复制代码
 
  输出结果:
 
  Array
 
  (
 
      [name] => bob
 
      [age] => 25
 
      [address] => stdClass Object
 
          (
 
              [city] => beijing
 
              [province] => BJ
 
          )
 
  )
 
  复制代码
 
  需要注意的是,使用强制类型转换方式时需要注意将输出结果中的stdClass对象转化成PHP数组。此时可以使用循环递归的方式解决该问题。为了避免该问题,一般建议使用 json_decode() 函数将JSON对象转化成PHP数组。
 
  JSON对象转成对象数组
 
  我们也可以将JSON对象转换成PHP对象数组。在PHP开发中,实际上更常见的是将一个JSON数组转换成PHP对象数组。下面介绍两种常见的方式来实现JSON对象转为对象数组。
 
  1. 使用json_decode()
 
  可以通过json_decode()和循环递归的方式实现JSON对象转为PHP对象数组。
 
  $jsonStr = '{ "name": "Bob", "age": 25, "address": {"city": "beijing", "province": "BJ"} }';
 
  $jsonObj = json_decode($jsonStr);
 
  $objArr = array();
 
  foreach ($jsonObj as $key => $value) {
 
      if (is_object($value)) {
 
          $objArr[$key] = $this->getJSONObj($value);
 
      } else if (is_array($value)) {
 
          $arr = array();
 
          foreach ($value as $item) {
 
              if (is_object($item)) {
 
                  array_push($arr, $this->getJSONObj($item));
 
              } else {
 
                  array_push($arr, $item);
 
              }
 
          }
 
          $objArr[$key] = $arr;
 
      } else {
 
          $objArr[$key] = $value;
 
      }
 
  }
 
  var_dump($objArr);
 
  复制代码
 
  这里的 getJSONObj() 函数将JSON对象转化成PHP 对象数组并返回。
 
  2. 使用array_map()函数
 
  除了循环递归的方式,我们也可以使用 array_map() 函数和匿名函数来实现JSON对象转化成PHP对象数组,代码如下所示:
 
  $jsonStr = '{ "name": "Bob", "age": 25, "address": {"city": "beijing", "province": "BJ"} }';
 
  $jsonObj = json_decode($jsonStr);
 
  $objArr = (array)$jsonObj;
 
  $objArr = array_map(function ($item) {
 
      if (is_object($item)) {
 
          return $this->getJSONObj($item);
 
      } elseif (is_array($item)) {
 
          return array_map(function ($sub_item) {
 
              return (is_object($sub_item)) ? $this->getJSONObj($sub_item) : $sub_item;
 
          }, $item);
 
      } else {
 
          return $item;
 
      }
 
  }, $objArr);
 
  var_dump($objArr);
 

(编辑:百客网 - 百科网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章