PHP的json问题

在PHP中使用json是很简单的事情,直接使用json_encode,json_decode函数处理就好

绝大部分情况下直接使用是没有任何问题的,今天就分享下json在PHP中一些有意思的操作

中文不转义

使用json_encode的数据中含有中文时,如果什么参数都不传,生成的json字符串中文会变成UNICODE编码,直接看json字符串根本看出是什么中文,这个时候可以使用JSON_UNESCAPED_UNICODE参数处理

json_encode($data, JSON_UNESCAPED_UNICODE);

斜杠不转义

默认情况下,json_encode会转义斜杠(反斜杠 \)字符为/,同样可以使用JSON_UNESCAPED_SLASHES参数处理,就不会转义反斜杠

json_encode($data, JSON_UNESCAPED_SLASHES);

如果想要同时设置中文和斜杠都不转义,当然也是可以的

json_encode($data, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);

遇到的哪些骚操作

上面只是正常的使用,看一下都会,难的是怎么融汇贯通,下面分享下我在实际项目中的使用

项目需要和其他开发团队进行接口对接,我们使用的是PHP开发,另外一个团队使用的是Java,异构系统间的接口校验使用加码算发生成sign校验,当前这个校验在前期是要先行的,当时也是测试通过的。

但是在发布到测试线的时候就出现了接口鉴权不通过的问题,鉴权代码调试通过后就没有发生更改,这就很奇怪,而且是两个开发团队,都是自己那边没有问题,只能慢慢排查了

接口的加密是把body的所有参数也进行算法加密的,通过Java端的转包发现我们这边没有保持中文和反斜杠不转义,使用上面的两个参数json数据就可以了,项目初期鉴权时使用的简单的英文字符传递的,所以能通过。

扩展

不仅是json_encode函数可以使用这两个参数,同样json_decode函数也是可以使用这些参数的

posted @ 2024-01-30 17:14  小刘的早餐店  阅读(18)  评论(0编辑  收藏  举报