位置: 编程技术 - 正文

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

  • 摊薄净资产收益率是什么意思
  • 出口退税便捷退税操作流程
  • 以土地投资入股是否需要缴纳增值税
  • 一次性收取加盟费 所得税
  • 普通发票税额没有打印全可以用么
  • 律师费的发票税率怎么算
  • 总公司向子公司收取管理费如何纳税
  • 对公账户的钱怎么取出来才不用交税
  • 当月预交增值税时所属期选了上期怎么办
  • 不动产经营租赁属于现代服务吗
  • 算材料成本的时候要算增值税吗?
  • 品种法完工产品成本的单位成本怎么算
  • 通讯费企业所得税计算
  • 税率与征收率有关系吗
  • 工作量法计提折旧会计分录
  • 出口退税收汇凭证号
  • 个人领取住房公积金需要什么材料
  • 公司注销后银行账户怎么注销
  • 增值税发票普票和专票有什么区别
  • 个人所得税0元算不算缴税
  • 应交税费有余额怎么结转
  • 白酒消费税最低计税价格
  • 进项负数发票怎么做账报税
  • Excel规划求解怎么做
  • 社保会计分录怎么写
  • 会计新准则讲解
  • vue项目中使用opencv
  • 优先股转化
  • 区分不同情形
  • 贷款减值损失准备怎么算
  • 企业股权投资收益缴纳什么税
  • php做网页
  • 所得税 减半
  • 固定资产可以直接入账吗
  • php一个页面多个分页
  • es6从入门到实战
  • php微信公众号 全站模板
  • upf命令
  • 公司承担员工的社保费会计分录
  • 会计科目设置怎么操作
  • java数组合并变字符串
  • 报销人和收款人是一个人
  • 汇算清缴交税怎么做账务处理
  • 代收代缴水费收不上来怎么办
  • 减值准备对当期损益的影响
  • 特许经营企业的特点
  • 详解增发万亿国债细节
  • sqlserver2019配置
  • 保险公司代扣的车船使用税分录
  • 小规模纳税人的增值税计入成本吗
  • 研发费用加计扣除是什么意思啊
  • 一般来说,采取质押贷款方式
  • 股权支付费用是什么意思
  • 存货账面价值入哪个科目
  • 住宿发票没有写天数
  • 对公受托理财申购怎么写
  • 公司法人借款给企业属于关联交易吗?
  • 会务费可以抵扣进项税额吗
  • 员工借款计入
  • 小企业会计准则主要按照什么计量
  • win7用固态
  • windows8蓝牙设置在哪里
  • win10教育版如何恢复出厂设置
  • linux打包压缩文件的命令
  • Win10预览版更新弹窗如何关闭
  • 校园网升级套餐
  • linux计划任务如何设置
  • cocos2d-x2.2.3和android平台环境的搭建
  • jQuery实现ajax调用WCF服务的方法(附带demo下载)
  • 查询同一网段下的其他ip
  • javascript中用于声明变量的关键字
  • python搭建网站并在服务器上部署
  • python列表组成字符串
  • android Intent Flags详解
  • 电子税务局可以开纸质发票吗
  • 税控盘专票作废流程
  • 社保扣费为什么忽高忽低
  • 股权转让和大宗转让区别
  • 本季度可以弥补上季度亏损吗
  • 新疆国税网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设