位置: 编程技术 - 正文

使用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注意的问题)

  • 增值税发票如何开
  • 小规模纳税人所得税税率是5还是2.5
  • 水利建设基金按照增值税征收
  • 注册税务师考试2023
  • 对方公司已注销如何付款
  • 客票服务主要包括
  • 酒店物料消耗包括哪些
  • 固定资产不提折旧怎么算
  • 社保基数3125交多少钱
  • 法人分配利润分录
  • 购买的旧机械设备怎么办
  • 资产负债表中无形资产是原值还是净值
  • 为什么要预提企业收入
  • 服务业工资计入成本还是营业费用
  • 个人交年金的多少有什么区别
  • 年薪制有什么好处
  • 外墙装饰公司的资质规定
  • 2016年的发票可以用到什么时候
  • 信汇凭证是转账凭证吗
  • 公司代缴个人社保费怎么做账
  • 增值税发票已认证抵扣还可以进项税额转出吗
  • 简单介绍linux
  • windows11禁止自动更新
  • windows10如何添加英文输入法
  • windows已禁用
  • win10如何禁止安装任何软件
  • 个人如何办理住房贷款
  • w10如何删除微软拼音
  • php读取txt内容
  • 金融商品转让属于什么服务
  • 闲置房的相关政策
  • 资产负债表根据明细账余额填列的项目
  • 结存材料实际成本分录
  • 个体户可以不办公户吗
  • 人工智能助力中国创新发展
  • 调参数是什么意思
  • tree命令常用参数
  • js去除属性
  • 银行存款向灾区捐款
  • 校验码如何查询
  • 帝国cms采集发布的文章链接打不开
  • 出差费用计入
  • 小规模纳税人升级为一般纳税人
  • 财务报表中的应收款项包括哪些
  • 赔偿的费用
  • 不可抵消
  • 个人所得税隔月交么
  • 交易性金融资产入账价值怎么计算
  • 企业享受政府补贴的具体方式
  • 企业所得税和个人所得税都要交吗
  • 分期收款发出商品是什么意思
  • 减免税额月底怎么结转
  • 单位补扣社保算漏交吗
  • 应交增值税的结转怎么算
  • 支付金额与实付金额不一致
  • 购买商品加包装怎么入账
  • 减免及返还增值税怎么算
  • 公司不营业需要交税吗
  • 收到了对方的作业怎么办
  • 小规模汽车维修管理制度
  • 图形工具的作用
  • fedora最新版本
  • Linux(CentOS)用split命令分割文件的方法
  • SMax4PNP.exe - SMax4PNP是什么进程
  • win10 edge浏览器设置信任站点
  • 代理服务器只能代理客户端http的请求
  • 怎么恢复手机桌面时间和日期
  • opencv轻松入门
  • 安卓图库权限
  • javascript sort排序
  • express的中间件
  • 脸部两旁的骨头
  • 游戏unity错误
  • javascript的代码写在哪里
  • 关于两个人感情文案
  • java教程csdn
  • a标签的href点击怎么不跳转
  • 个人限购
  • 国家税务总局深圳税局
  • 河南省纪检委网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设