位置: 编程技术 - 正文

使用PHP json_decode可能遇到的坑与解决方法(使用的英文)

编辑:rootadmin

推荐整理分享使用PHP json_decode可能遇到的坑与解决方法(使用的英文),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:使用灭火器人要站在上风口还是下风口,使用粗盐热敷十大危害,使用伪造变造机动车驾驶证扣几分,使用伪造变造机动车驾驶证扣几分,使用伪造变造机动车驾驶证扣几分,使用伪造变造机动车驾驶证扣几分,使用时间,使用伪造变造机动车驾驶证扣几分,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

最近在做网站 的时候用到了json_decode函数,发现了一个问题,现在总结分享出来供大家参考学习,话不多说了,来一起看看详细的介绍吧。

场景:

某项目客户反馈,输出的结果 JSON 中有个要求为对象的数据字段,在某些情况下返回的是 [] 而不是 {};数据由公司其他部门提供,查看原始数据的时候,没有发现任何问题;后来因为要加入某些预处理,在获取到其他部门的 JSON 数据之后进行解码并对某个字段进行处理;然而,在处理完之后再次使用 JSON 输出,发现结果已经不是我们想要的了。

原始数据

其中 foo 是我要进行处理的字段,处理完成之后再次使用 json_encode($data) 进行 JSON 编码。

使用PHP json_decode可能遇到的坑与解决方法(使用的英文)

编码完成之后的结果却是这样的

空对象编程了空数组,而且我并没有处理过字段 bar

通过对模拟数据的实测,发现是因为在对 JSON 进行解码的时候,是这么解的

问题就出在这里,由于 PHP 自身的特性,在 PHP 中 array 是可以代表强类型语言,如 Java 中的 List 和 Map 的。

来看 PHP 中 json_decode() 方法是如何定义的

来源 $assoc 为 true 时,返回的类型是 array,所以问题就来了,当 JSON 中空对象 {} 和 [] 空数组,使用这种方式解码出来的结果表现是一致的;即 array();当再次 json_encode() 编码的时候就出现了 {} 变 [] 了。

所以正确的做法是在解码 JSON 的时候 json_decode 不要传递第二个参数;让解码结果是一个对象,然后操作对象的属性,操作完成之后再次编码就不会出现偏差。

这种问题最突出在于强类型语言和弱类型语言的 API 对接上,由于项目的下家是使用 Java 语言,所以导致了 BUG

总结

标签: 使用的英文

本文链接地址:https://www.jiuchutong.com/biancheng/287567.html 转载请保留说明!

上一篇:PHP实现的简单在线计算器功能示例(php实现和工作原理)

下一篇:phpStudy中升级MySQL版本到5.7.17的方法步骤(php升级到php7注意的问题)

  • 一个季度超过30万怎么做账
  • 会计核算职能有哪些特征
  • 所得税视同销售行为有哪些
  • 增值税申报表与财务报表不一致
  • 网络文化传媒公司名字
  • 厂里搬厂赔偿员工标准
  • 发票查询发票代码有误
  • 加工皮革出口能申请退税吗
  • 汇款手续费的会计科目
  • 应收票据怎么写
  • 合作社土地入股协议
  • 预交了一个季度的社保
  • 股权转让个人交的印花税可以入账吗
  • 没有建筑资质能办安全生产许可证吗
  • 如何查找使用过的手机号
  • 资产负债表日是什么意思
  • 个体户收入总额是含税还是不含税
  • 暂估入账没有调增,以后年度怎么调整
  • 纳税人拒不缴滞纳金是否可单独强制执行
  • 公司注销了帐户钱能办款
  • 汇票和本票之间在使用上有什么差别
  • 合营企业之间为什么不构成关联方
  • 认证费计入什么科目
  • 单位卖报纸的钱算什么
  • 新开办公司前三个月没交社保,后面正常缴纳
  • 收到负数购入发票怎么办
  • 收到上年度企业所得税退税款
  • 以前年度多计提的税金怎么调整
  • 企业退款如何走账
  • 鸿蒙系统怎么隐藏应用图标
  • php fgets
  • 现金解款单怎么读
  • 以摊余成本计量且其变动计入当期损益
  • print函数php
  • php 遍历字符串
  • 国内来料加工会亏本吗
  • php处理304缓存
  • 直接进入税金及附加的科目
  • 预收账款是否需入账
  • 年度财务报表分为哪几类
  • dedecms都能做什么网站
  • python列表的创建和操作
  • 小微企业如何升级一般纳税人
  • 贷款担保费应计入什么
  • 项目清算后未售房产怎么纳税
  • 材料采购合同印花税税率
  • 涉及销售费用如何计算
  • 兼职会计如何做账报税
  • 进项税怎么做账务处理
  • 企业管理费的计算基础
  • 会计账簿的作用主要包括
  • 租写字楼水电费自己付吗
  • 公司怎么变更公司名称
  • win7怎么更改音频输出
  • win10创意者更新易升
  • win10系统微软账号退不了怎么办
  • xp硬盘安装win7系统教程
  • win10预览版最新
  • 把mac屏幕切换到桌面desktop
  • 进程spoolsv.exe
  • windows xp系
  • win8.1设置在哪
  • 电脑迅雷影音在哪个文件夹
  • jquery的实现原理
  • Quick cocos2dx-Lua(V3.3R1)学习笔记(十三)-----继续触摸事件之多点触摸
  • 分离与继承的思想是什么
  • shell的逻辑运算符
  • css onclick
  • python中迭代器的作用
  • pm2启动nodejs
  • 触摸模式设置
  • [置顶]游戏名:chivalry2
  • js 修改 css
  • python版本怎么选
  • 财产保险合同的种类
  • 天府新区劳动局投诉电话
  • 广东省职称证书编号查询系统
  • 土地评估报告书
  • 深圳税务局官方客服电话
  • 辽宁社保缴费公众号
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设