PHP 实现 JSON 数据的编码和解码操作详解

yizhihongxing

PHP 实现 JSON 数据的编码和解码操作详解

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,通常用于前后端数据交互。PHP 提供了对 JSON 数据的编码和解码支持,使得开发者可以方便地将 PHP 数据结构转换成 JSON 数据字符串,或将 JSON 数据字符串转换成 PHP 数据结构。

JSON 编码

PHP 中使用 json_encode() 函数将 PHP 数据结构编码成 JSON 字符串。可以接受一个或多个参数,其中第一个参数是要编码的 PHP 数据结构,其它参数是用于定制编码行为的选项参数。

<?php
  $arr = array('name' => 'Alice', 'age' => 25, 'hobbies' => array('reading', 'running'));
  $json = json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);

  echo $json;
?>

上面的示例中,我们将一个包含了名字、年龄和爱好数组的关联数组编码成了 JSON 字符串。JSON_UNESCAPED_UNICODE 选项用于解决对中文字符进行编码转义的问题,而 JSON_PRETTY_PRINT 选项则用于将生成的 JSON 字符串进行格式化。

执行上述代码,输出的 JSON 字符串如下:

{
    "name": "Alice",
    "age": 25,
    "hobbies": [
        "reading",
        "running"
    ]
}
{
    "name": "Alice",
    "age": 25,
    "hobbies": [
        "reading",
        "running"
    ]
}

JSON 解码

PHP 中使用 json_decode() 函数将 JSON 字符串解码成 PHP 数据结构。同样可以接受一个或多个参数,其中第一个参数是要解码的 JSON 字符串,其它参数是用于定制解码行为的选项参数。

<?php
  $json = '{"name":"Alice","age":25,"hobbies":["reading","running"]}';
  $arr = json_decode($json, true);

  var_export($arr);
?>

上面的示例中,我们将一个 JSON 字符串解码成了包含了名字、年龄和爱好数组的关联数组。第二个参数设置为 true 表示将 JSON 对象转换成关联数组。

执行上述代码,输出的结果如下:

array (
  'name' => 'Alice',
  'age' => 25,
  'hobbies' => 
  array (
    0 => 'reading',
    1 => 'running',
  ),
)
array(
   'name' => 'Alice',
   'age' => 25,
   'hobbies' => array(
      0 => 'reading',
      1 => 'running'
   )
);

示例说明

示例1

假设有一个 PHP 程序要输出 JSON 格式的数据,我们可以使用 json_encode() 函数将 PHP 数据结构编码成 JSON 字符串,并输出到前端。

<?php
  $data = array('name' => 'Tom', 'age' => 20);
  header('Content-type: application/json');
  echo json_encode($data);
?>

上述代码中,我们将一个包含了名字和年龄的关联数组编码成了 JSON 字符串,并设置了响应头的 Content-Type 值为 application/json

示例2

假设前端提交了一个 JSON 格式的数据,我们可以使用 json_decode() 函数将 JSON 数据字符串解码成 PHP 数据结构,以便进行后续的数据处理。

<?php
  $json_str = file_get_contents('php://input');
  $data = json_decode($json_str, true);

  if(is_array($data)){
      // 处理数据
  }else{
      // 数据格式有误
  }
?>

上述代码中,我们读取了客户端提交的 JSON 数据字符串,并使用 json_decode() 函数将其解码成了 PHP 数据结构。在对数据进行处理之前,我们还需要判断解码后的数据是否为数组类型。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP 实现 JSON 数据的编码和解码操作详解 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • 12个C语言必背实例分享

    12个C语言必背实例攻略 本文将分享12个C语言必背实例,涉及到的知识点从基础的数据类型、数组、结构体到文件操作等。以下是每个实例的说明及代码示例。 1. 输入输出 实例说明 通过 scanf 函数输入三个数,再通过 printf 函数输出这三个数的和 代码示例 #include <stdio.h> int main() { int a,b,c,…

    C 2023年5月23日
    00
  • 易语言通过文本解析的方式把C代码转换成易代码

    易语言是一种较为简单易用的编程语言,它提供了文本解析和代码转换的功能,可以帮助程序员将其他编程语言的代码转换成易语言代码。下面我将提供易语言通过文本解析的方式把C代码转换成易代码的完整攻略,具体过程如下: 第一步:了解C代码的基本语法 在进行C代码的文本解析之前,我们需要深入了解C语言的基本语法。C语言是一种结构化的编程语言,它支持各种循环、条件语句、数组、…

    C 2023年5月24日
    00
  • C语言实现扫雷小游戏(扩展版可选择游戏难度)

    C语言实现扫雷小游戏(扩展版可选择游戏难度)攻略 整体思路 一、游戏界面及难度选择 在开始游戏前,首先需要让玩家选择游戏难度,根据不同的难度生成不同数量的地雷。可以使用 printf() 函数输出提示信息,再使用 scanf() 函数获取用户选择。 然后,显示游戏界面,包括地图、标记、已扫描的方块等信息,需要使用 printf() 函数将这些信息渲染到控制台…

    C 2023年5月22日
    00
  • Windows系统下使用C语言编写单线程的文件备份程序

    下面我详细讲解一下在Windows系统下使用C语言编写单线程的文件备份程序。 准备工作 首先,我们需要在Windows系统下安装MinGW工具链。MinGW是一个基于Windows的开源GCC编译器集合,可用于编译C语言程序。 安装好MinGW后,我们需要设置环境变量,方便我们在终端中使用编译器。在Windows系统中,可通过以下步骤设置环境变量: 右键单击…

    C 2023年5月22日
    00
  • 在C++中如何阻止类被继承详解

    在C++中,如果想要阻止某个类被继承,可以使用以下两种方法。 使用final关键字 在C++11标准中,引入了final关键字,可以用于修饰类、函数和变量,表示它们是最终版本,不允许子类、派生函数和别名修改。如果将一个类声明为final,则它不可以被其他类继承。 示例代码: class Base final { // 将Base类声明为final,不可以被继…

    C 2023年5月23日
    00
  • R语言 数据集行列互换的技巧分享

    R语言 数据集行列互换的技巧分享 什么是数据集行列互换 数据集行列互换是指将数据集的行和列进行交换,也就是将原来以行为单位的数据变成以列为单位的数据,或者将原来以列为单位的数据变成以行为单位的数据。这个操作在数据处理中比较常见,可以帮助我们更好地理解和分析数据。 数据集行列互换的方法 使用t()函数进行转换 t()函数是R语言中的一个函数,用于将矩阵和数据框…

    C 2023年5月23日
    00
  • C语言用指针支持栈

    C语言用指针支持栈的完整使用攻略 栈是一种常见的数据结构,在C语言中可以使用指针来支持栈。下面是用指针实现栈的完整使用攻略: 数据结构 栈是一种后进先出(LIFO)的数据结构,可以用数组或链表实现。这里我们使用数组实现栈。 定义栈结构体: #define MAXSIZE 10 // 栈的容量 typedef struct stack { int data[M…

    C 2023年5月9日
    00
  • Java日常练习题,每天进步一点点(28)

    题目:给定两个字符串,找到这两个字符串中最长的公共连续子字符串。 示例1: 输入: str1 = “ABCD” ,str2 = “CBCE”输出: “BC” 示例2: 输入: str1 = “ABC” ,str2 = “DEF”输出: “” 分析:题目要求找到两个字符串的最长公共连续子字符串,我们可以通过动态规划算法来解决此类问题。具体思路是,定义一个二维数…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部