编码解码哈希加密格式化时间转换开发生成文本处理网络工具其他工具
首页 / 格式化 / JSON转PHP数组

JSON转PHP数组

把 JSON 转成 PHP 数组。

输入
结果

这个工具能做什么

把一段 JSON 文本转成等价的 PHP array 字面量,键值对用 => 连接,最外层和嵌套层都用 PHP 5.4 起支持的短数组 [] 语法。日常开发里经常遇到这种情况:拿到接口返回的一段 JSON,或者从文档、抓包工具里复制的配置片段,想直接放进 PHP 代码当默认配置、测试桩或常量数组用。手动把双引号换成单引号、把冒号改成 =>、给每层套上 array 再逐行缩进,既慢又容易漏改引号导致语法错。这个 json转php 工具就是把这一步自动化,粘进去就能拿到可以直接贴回源码的 PHP 数组代码。

它的工作方式不是简单的文本替换,而是先把 JSON 按标准语法解析成内存里的树状数据结构,再递归遍历这棵树重新序列化成 PHP 语法。JSON 对象转成带字符串键的关联数组(key => value),JSON 数组转成索引数组,数字、布尔值 true/false、null 分别映射到 PHP 的对应字面量。字符串输出时统一用单引号包裹,因为 PHP 单引号字符串不做变量插值也不解析 \n 之类的转义序列,只需要转义单引号本身和反斜杠两个字符,比双引号更安全可控。整个过程按 UTF-8 处理文本,中文等非 ASCII 字符会原样保留,不会被转成 \uXXXX 形式。本地处理不上传,粘贴的数据不会离开浏览器。

最常见的用法是把第三方接口的返回样例固化进代码。比如支付、地图或短信平台文档里给了一段 JSON 响应示例,你想在本地先把业务逻辑跑通,直接粘进来转成 PHP 数组,赋值给变量当 mock 数据就能用。另一个场景是配置迁移:手上有一份 JSON 格式的配置(路由表、字段映射、多语言词条),想改成 config 目录下 return [...]; 的 PHP 配置文件,转完稍作整理即可落地。写 PHPUnit 测试时也常用它把预期结果的 JSON 快速变成 fixture 数组,省去手敲括号和引号的时间。

有几个边界情况值得留意。JSON 规范里对象的键一定是字符串,所以转出来的关联数组键都是带引号的字符串键,即使原文写的是 "0"、"1" 这样的数字串,也不会自动变成整型键,需要时得自己处理。JSON 不合法(缺逗号、有尾逗号、键没加双引号、用了单引号或注释)会导致解析失败,这类问题要先把 JSON 本身修正合法再转。它和 PHP 自带的 var_export 思路相近,区别在于 var_export 作用于运行时已有的 PHP 变量,而这个工具的输入是纯 JSON 文本,适合在不跑 PHP 的情况下直接把外部数据变成 array 代码。

JSON转PHP数组是一个免费的在线工具,打开网页就能用,不用下载也不用注册。平时大家搜的“json转php”、“json转php数组”、“json转array”,说的都是这个。

常见使用场景

使用方法

  1. 把内容粘贴到输入框(生成类工具直接设置选项)。
  2. 按需要选择选项,点操作按钮。
  3. 结果出现在下方,点「复制结果」即可带走。

常见问题

转出来的是 [] 短数组还是 array() 老写法?
输出的是 PHP 5.4 起支持的短数组 [] 语法,嵌套的各层也都用 []。如果项目还跑在 5.3 及更早版本上,需要自己把 [ ] 手动换回 array( )。
为什么字符串统一用单引号而不是双引号?
单引号字符串在 PHP 里不解析 $ 变量,也不处理 \n 等转义序列,只需转义单引号和反斜杠两个字符。这样当 JSON 里的值含有 $ 或 \ 时,不会被 PHP 意外当成变量或转义,更安全。
JSON 里的对象和数组分别会转成什么?
JSON 对象转成带字符串键、用 => 连接的关联数组,JSON 数组转成从 0 开始的索引数组。true/false/null 转成 PHP 的 true/false/null,数字保持原样不加引号。
中文或其他 UTF-8 字符会被转成 \uXXXX 吗?
不会。转换按 UTF-8 处理,中文、emoji 等字符会原样保留在单引号字符串里,不做 Unicode 转义。前提是你粘进来的 JSON 本身就是 UTF-8 编码。
粘进去点转换没反应或报错是怎么回事?
多半是 JSON 本身不合法,常见于尾逗号、键没用双引号、用了单引号或加了注释这些 JSON 不允许的写法。先用 JSON 校验/格式化工具把它修成合法 JSON,再来转换即可。

相关工具

查看全部「格式化」工具 →

相关名词解释