PHP 写的比其他任何语言都多,首先是作为 WordPress 插件开发人员,后来在 Laravel 中构建 SaaS 后端,还有一个小杂务不断出现,我厌倦了用手做你有一个 JSON blob,一个配置样本,一个 API 响应,一个夹具,你需要在你的源代码中作为 PHP 数组,在运行时没有解码,实际上是作为字面写入文件,用手重新输入括号和箭头很慢,这正是工具应该做的那种机械翻译,所以我内置了一个 Toolz.dev并且这是它的指南。
TL;博士: 工具 JSON 到 PHP 阵列转换器 解析 JSON 文档并将其序列化为 PHP 数组字面值,您可以直接粘贴到文件中。 JSON 对象成为关联数组
=>、JSON数组变成索引数组,标量映射到它们的PHP等价物,选择短[]或经典array()语法,设置缩进,并可选地将结果包装在 a 中$variable = [...];assignment。it运行完全客户端:没有上传,没有注册,离线工作。
什么是 JSON 到 PHP 阵列转换器?
JSON 到 PHP 数组转换器将 JSON 文档转换为等效的 PHP 数组字面值。 JSON 对象变成用。 => 符(operator),一个 JSON 数组变成索引数组,标量类型直接映射:一个 JSON 字符串变成一个单引用的 PHP 字符串, true 並 false 保持不变, null 留下来 null(number)保持其值,嵌套被保留到任何深度,因此一个深度结构化的JSON对象出来是一个深度结构化的PHP数组,具有相同的形状。
JSON和PHP数组描述同一个东西,键控和有序值树,标点不同,JSON使用冒号和大括号;PHP使用 => 和括号。它们之间的翻译是纯粹的机制,而机械是容易错误的手做,特别是嵌套结构,其中单个错位的括号破坏文件。转换器确定性地进行翻译,并将您交回有效的PHP。
这不是什么值得明确,不是 json_decode。PHP在运行时读取JSON非常好,当你的数据以字符串形式到达时,解码是正确的动作。这个工具是针对另一种情况,当你希望数组生活在源代码本身中时。
为什么不直接使用 json_decode呢?
PHP开发者每个都会问的第一个问题,而且是正确的。 json_decode($string, true) JSON字符串解析成PHP数组,PHP手册将其记录为消耗JSON的标准方式,如果你的JSON是到达运行时的数据,从一个HTTP请求,一个队列,一个你读取的文件,那么 json_decode 正是您应该使用的,并且代码生成器不属于它附近的任何地方。
Converter是针对不同的情况:当JSON不是运行时数据而是你想要致力于代码的东西我自己工作中的几个具体案例一个默认配置数组,它附带一个插件,应该在源中可读和可查找表,说一个国家代码到名称的地图,你粘贴一次,从不获取一个测试夹具,需要是字面上的,所以测试是独立的,不依赖于读取文件数据库迁移的种子文档中的一个示例,必须是可复制粘贴的PHP而不是JSON。
在所有这些中,对每个请求的 JSON 字符串进行解码将是浪费,并且会将数据隐藏在字符串文字后面,其中您的编辑器无法折叠它,您的 linter 无法检查它,并且审阅者无法将其读取为 PHP。将数组写入源解决了这个问题。转换器是从 JSON 样本到该文字的最快方法。
这是一张桌子上的决定。
| 情况 | 用 | 为什么 |
|---|---|---|
| JSON 作为数据到达运行时 | json_decode($json, true) |
解析是工作;保持动态 |
| JSON 是配置、固定装置、种子、示例 | JSON 到 PHP 阵列转换器 | 将可读字面承诺为源 |
| 您需要从 PHP 值中恢复 JSON | json_encode($array) |
的反向 |
你有 PHP serialize() 弦 |
取消序列化工具 | 这完全是不同的格式 |
Short 之间的区别是什么 [] 並 array() 语法?
它们产生相同的数组;只有括号不同。短语法使用 [ 並 ] PHP 5.4 以来就已经上市了,现在已经是古老的历史了,所以对于任何现代代码库来说,短语法都是默认的,也是我达到的经典 array() form 在 PHP 曾经发布的每个版本中都有效,这是仍然选择它的唯一原因:您的目标是比 PHP 5.4 更旧的运行时,或者是其样式指南要求使用长表单的代码库。
该工具可以让您在它们之间切换,而无需重新粘贴 JSON,因此,如果您正在为较旧的项目做出贡献,则可以一键匹配其 house 风格。我对任何新事物的建议都是简短的语法,而 PSR-12(现代 PHP 编码风格)就是围绕它编写的。
字符串和特殊字符是如何处理的?
这是咬人自己写快速转换器的部分,所以值得解释一下。该工具将字符串作为 PHP 单引文字发出来。在单引语中,PHP 几乎从字面上对待每个字符;唯一特别的两个是反斜杠和单引语本身。因此转换器恰好逃脱了这两个,反斜杠变成了两个反斜杠,单个引语得到前面的反斜杠,并且它使其他所有内容都单独存在。
That 有一个令人愉快的结果,JSON 字符串内部的换行符作为单引号 PHP 字符串内部的真实换行符贯穿其中,它有效且准确地保留了字符,如果工具天真地尝试应用双引号转义序列,您不会得到您会得到的破坏。像 JSON 字符串一样 O'Brien 变成 'O\'Brien'还有像 Windows 路径这样的路径 C:\Users 变成 'C:\\Users'(PHP),这两者都是正确的,如果你曾经调试过一个 config 文件,其中一个值中的撇号默默地破坏了语法,你会体会到这是为您处理的。
如何使用转换器?
Flow是四步,在输入框中粘贴一个JSON对象或数组;如果想先看到输出的形状,加载样本,挑选数组语法,短 [] 或 array()。将缩进设置为 2 个空格、4 个空格或一个选项卡,以匹配您的项目,并可选地键入变量名称以将输出包裹为 $config = [...]; 使用尾随分号,准备好放入文件中。然后单击"转换"并复制结果。
JSON无效,该工具会报告解析器'自己的错误消息,而不是默默失败,因此可以快速找到一个杂散的尾随逗号或未引用的密钥。并且由于所有内容都在浏览器中运行,因此您可以在不离开您的机器的情况下粘贴真正的API响应或私有配置,当值不是您将发送到随机服务器的值时,这很重要。该客户端模型与站点其余部分的模型相同,在 中描述 数据隐私在线工具 指南。
这与其他 JSON 工具如何配合?
JSON到PHP阵列转换器是站内JSON变压器小家族的一员,它们共享同一个解析核心,当你想先整理JSON的时候,the JSON 格式化程序 将缩进并验证它当您需要与 TypeScript 接口而不是 PHP 相同的数据时, JSON 到 TypeScript 转换器 infers 的类型,当目标是一个电子表格或者一个数据库加载时,the JSON 到 CSV 转换器 将其压平成行,并且 JSON 到 YAML 转换器 处理更喜欢 YAML 的配置格式。
具体来说,对于 PHP 开发人员来说,值得了解的邻居是 取消序列化工具其中处理 PHP's 自己的 serialize() format。that是与json不同的野兽,json是您在会话数据和一些wordpress选项值中找到的php特定线格式,并且这两个工具涵盖了结构化数据通常在php项目中出现的两种方式,如果您跨堆栈工作,则 web开发人员工具包 综述显示了这些棋子如何组合在一起 开发人员生产力工具 指南涵盖了更广泛的集合。
WordPress 和 Laravel 工作流程中的工作示例
WordPress插件中,我用我最喜欢的两个地方来做这个具体 在WordPress插件中,你经常出货一个默认设置数组,在激活时为选项表播种 在开发过程中,该结构经常以JSON样本开始生命,也许从设置UI导出或在设计模式时勾画出来,而不是手译它,我将JSON粘贴到转换器中,选择短语法和4空间缩进来匹配插件's样式,类型 defaults 作为变量名称,然后返回 $defaults = [ ... ]; 这直接落入 a 中 get_default_settings() 函数。密钥保持可读性,审阅者可以在 diff 中看到形状,并且每个页面加载中没有运行时解码。
Laravel 侧类似,但出现在 config 和 seeders 中,一个 config 文件返回一个大的关联数组,我定期有一个 JSON 版本的一些第三方映射,一个货币表,一组特征标志,一个计划列表,需要成为那个数组的转换器将 JSON 变成字面,我把它包裹在 return [ ... ]; config 文件所期望的,并且该值现在是框架缓存的一流 PHP config:cache 而不是从字符串中解析。对于数据库播种机,同样的技巧有效:粘贴样本行的 JSON,获取数组并将其馈送到 insert()。
我依赖转换器而不是的原因 json_decode(file_get_contents(...)) 在这些点上不是懒惰,而是提交字面使数据成为人类读取的形式的一部分代码审查、一部分静态分析和一部分版本历史记录。坐在代码旁边的 JSON 文件对于 PHP 字钻是不可见的;源中的数组不是。当数据是应用程序的固定部分而不是输入到应用程序中时,该可见性值得一次性转换。
还有一个文档角度我低估了,直到我开始写更多指南,当你想在 README 或知识库中显示 PHP 示例时,JSON blob 不是可复制粘贴的 PHP,抓取它的读者会遇到语法错误。首先通过转换器运行它意味着您的 docs 中的示例是真实的、可运行的 PHP,读者可以将其放入文件中并查看工作,这是一个悄悄提高文档质量的小事。
有哪些值得了解的极限?
几个诚实的边。最大的是数字精度,它是 JSON 解析的一般属性,而不是专门针对此工具。转换器使用浏览器解析您的 JSON's JSON 解析器,它将数字表示为双精度浮动。超过大约 2 的整数到 53 次方,十六位数字,在解析时间失去精度,在工具看到它们之前。如果您使用非常大的整数 ID 转换 JSON,请将它们视为 JSON 中的字符串,以保持精确。每个基于 JSON。parse 的转换器都共享此限制;否则声称会撒谎的工具。
PHP数组密钥强制 第二,PHP悄悄地将一个看起来像整数的字符串密钥转换为一个实际的整数密钥,转换器将对象密钥写成引用的字符串,显式正确,但要注意PHP本身可能会处理 '0' 並 0 as 运行时相同的键。这只对键为数字字符串的对象很重要,这很少见,行为是 PHP's,而不是工具's。
第三,空容器。一个空的 JSON 对象 {} 还有一个空的 JSON 数组 [] 两者都成为 [] PHP中,因为一个PHP数组无法区分两者,那是映射中真正的歧义,而不是快捷方式,没有PHP构造可以保留差异。
最后,输出是一个值,而不是一个语句,除非你提供一个变量名称。如果没有一个,你就会得到一个裸字面意思,这是你粘贴到现有表达式中时想要的;如果有一个完整的赋值以分号结尾,变量名称就会被验证,因此无效的标识符会被拒绝,并带有清晰的消息,而不是产生损坏的 PHP。
常见问题
什么是 JSON 到 PHP 阵列转换器? JSON 到 PHP 数组转换器将 JSON 文档转换为等效的 PHP 数组字面值。JSON 对象成为与 => 运算符的关联数组,JSON 数组成为索引数组,标量类型映射到它们的 PHP 对应项,因此您可以将结果直接粘贴到脚本中。
如何将 JSON 转换为 PHP 数组? JSON粘贴到输入框中,选择短[]或数组()语法和缩进样式,然后单击转换。该工具构建了一个可以复制的PHP数组文字,如果输入变量名称,可以选择包裹在变量赋值中。
短[]和数组()语法的区别是什么? 它们产生相同的数组;只有括号不同。短语法使用 [],并且自 PHP 5.4 以来一直可用,而 array() 是在每个 PHP 版本中工作的较旧形式。仅当您必须支持比 PHP 5.4 更旧的运行时才选择 array()。
这是否取代了 PHP 中的 json_decode? No。json_decode($json, true)在运行时将一个JSON字符串解析为数组,这在JSON作为数据到达时是正确的。该工具将数组写入您的源代码,而不是适合配置、固定装置、种子数据以及应该生活在文件中的示例,而不是在每个请求上被解码。
JSON 对象和数组是如何映射的? JSON 对象变成一个 PHP 关联数组,其中每个键都是一个单引号字符串,后跟 => 及其值,一个 JSON 数组变成一个索引 PHP 数组,元素按顺序嵌套保存到任何深度,与源中完全相同。
字符串和特殊字符是如何处理的? PHP单引字面形式发出字符串,因此只有反斜杠和单引号与前面的反斜杠一起转义。其他所有字符,包括真正的换行符,都逐字保留,这与PHP对待单引字符串的方式相匹配。
我的json是否上传到任何地方? No。转换完全发生在您的浏览器使用JavaScript在您的设备上。您的JSON从未上传,记录或存储,并且一旦页面加载,该工具将继续与断开连接的网络一起工作。
JSON 到 PHP 阵列转换器是否免费? Yes。完全免费,无注册,无水印,无使用上限。将尽可能多的JSON文档转换为PHP阵列,因为您需要个人或商业项目。



