位置: 编程技术 - 正文

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

  • 企业所得税的成本是含税还是不含税
  • 金税平台开具增值税发票
  • 滴滴出行开具的运输服务电子普通发票
  • 营改增土地出租
  • 业务协作费是什么
  • 收到国家退税
  • 防伪税控维护费会计分录
  • 一般纳税人销售旧货
  • 增普票付款要不要从公户走?
  • 药用植物所
  • 技术服务合同在北京由哪个法院管辖
  • 工会经费可以用于哪些支出
  • 期间费用率计算方式
  • 毛利率与净利率的差额
  • 销售推广的常用形式
  • 网络不通怎么拼ip
  • 房屋租赁费应如何缴纳
  • 向农民购进农产品
  • win11怎么更改系统日期
  • 如何查看自己的qq密码
  • 公司付物业费没开发票
  • 怎么查上市公司
  • php升级到php7注意的问题
  • 哪些项目计入其他应收款
  • react roter
  • vue父子组件如何传递数据
  • php自动加载函数
  • 临过期产品
  • php 操作mongodb
  • sqlserver还原数据库一直显示正在执行0%
  • 帝国cms吧
  • 以土地使用权投资入股
  • 福利费用使用范围
  • 增值税年末所有都要结平吗
  • 工会经费能不能用于体检
  • 增值税达不到起征期
  • 发票已经认证后怎么撤销
  • 销售返利如何得到法律的保护
  • 计划成本法有什么差异
  • 销售货物增值税税率变化
  • 报考中级会计师考几科
  • 专用设备技术维护费
  • 调整以前月份的管理费用怎么做
  • 参加新冠疫情防控工作感悟 医务人员
  • 走逃发票账务处理
  • 工会经费支出审批表
  • 预付账款没有发票吗
  • 资产负债表中负债的排列依据是
  • 现金日记账是什么帐
  • 住宿费报账怎么写
  • 解除非正常户罚款调整操作
  • 年初要新建帐套吗
  • 深入分析换一种说法
  • linux系统转换为win系统脚本
  • vmware虚拟机怎么卸载不了
  • windows 10预览版
  • 电脑及网络维护
  • 两种方法解决一半模型的问题
  • mac打开下载文件夹
  • 安装linux出现grub的原因
  • windows8怎么使用
  • windows8使用教程
  • windows 相机打不开
  • win7如何查询电脑使用记录
  • 怎么提升win7性能
  • 局域网win7 64位旗舰版共享打印机状态错误0x0000000a的详细图文解决方法
  • jquery跳出循环
  • jquery手机号码正则表达式
  • 一键配置天赋的台词
  • javascript模块化规范有哪些
  • jquery 下拉框变更事件
  • vue router 组件
  • jquery移动端ui框架
  • android 属性动画原理
  • javascript怎么样
  • android自定义view的三大流程
  • 江苏国税电子税局
  • 湖北税务官方网
  • 土地增值税鉴证业务的流程
  • 年轻干部是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设