php-json

本文介绍PHP中JSON的编码与解码方法,包括如何将PHP数组转换为JSON格式,以及如何将JSON字符串还原为PHP数组。文章通过实例演示了不同类型的PHP数组和对象如何转换为JSON格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

在PHP语言中使用JSON和将json还原成数组的方法
PHP数组和Json之间的转换

一、json定义:

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; 
var_dump(json_decode($json,true));

结果就生成了一个关联数组:

array(5) {           
    ["a"] => int(1)       
    ["b"] => int(2)       
    ["c"] => int(3)       
    ["d"] => int(4)       
    ["e"] => int(5)        
} 

1、json的分隔符(delimiter)只允许使用双引号,不能使用单引号。
2、json名值对的”名”(冒号左边的部分),任何情况下都必须使用双引号。
3、最后一个值之后不能添加逗号(trailing comma)
4、另外,json只能用来表示对象(object)和数组(array),如果对一个字符串或数值使用json_decode(),将会返回null。
5、json_encode 对变量进行 JSON 编码,将对象或数组转为json。
json_decode 对 JSON 格式的字符串进行解码,转换为 PHP 变量

二、数组转json:

示例一:关联数组

<?php
$array = array("name" => "Eric", "age" => "23");
echo json_encode($array);
?>

输出:

{"name":"Eric","age":"23"}

示例二:关联数组

<?php
$array = array(0 => "Eric", 1 => "23");
echo json_encode($array);
?>

输出:

["Eric","23"]

以上两个例子可以看出,
如果PHP数组的键都是数字,那么json_encode()返回一个数组形式的Json,
如果PHP数组的键全是字符串,那么json_encode()就会返回一个对象形式的Json。

示例三:

<?php
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
?>

输出:

["one","two","three"]

三、数组、对象转json

示例一:数组

<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>

显示:

{"a":1,"b":2,"c":3,"d":4,"e":5}

示例二:对象

<?php
class Emp {
    public $name = "";
    public $hobbies  = "";
    public $birthdate = "";
}
$e = new Emp();
$e->name = "sachin";
$e->hobbies  = "sports";
$e->birthdate = date('m/d/Y h:i:s A', strtotime("8/5/1974 12:20:03")); 

echo json_encode($e);
?>

显示:

{
    "name": "sachin",
    "hobbies": "sports",
    "birthdate": "08/05/1974 12:20:03 PM"
}

示例三:数组+对象

ResponseJson.php

<?php

class ResponseJson
{
    /**
     * 按json方式输出通信数据
     * @param integer $code 状态码 如200、400等
     * @param string $message 提示信息
     * @param array $data 数据
     * return string
     */

    public static function json($code, $message = "", $data = array())
    {
        if (!is_numeric($code)) {
            return "";
        }

        $result = array(
            'code' => $code,
            'message' => $message,
            'data' => $data
        );
        echo json_encode($result);
    }
}

// json_encode() 用于对变量进行 JSON 编码,该函数如果执行成功返回 JSON 数据,否则返回 FALSE 。

CallResonseJson.php

<?php
require_once("ResponseJson.php");

$ar = array(
    "auth" => array(
        "user" => "customer",
        "password" => "password",
        "context" => "4",
    ),

    "owner" => array(
        "user" => "customer2",
        "context" => "4",
    ),

    "language" => "en",

    "task" => array(
        "code" => "0130",
    ),
);

ResponseJson::json(200, '数据返回成功', $ar);

//php中:: 意思:类中 静态方法和静态属性的引用方法

显示:

{
    "code": 200,
    "message": "数据返回成功",
    "data": {
        "auth": {
            "user": "customer",
            "password": "password",
            "context": "4"
        },
        "owner": {
            "user": "customer2",
            "context": "4"
        },
        "language": "en",
        "task": {
            "code": "0130"
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值