今天在进行接口加签的时候,发现一个问题,数据一直加签失败; 再查找一番原因后发现原来 json_encode 对反斜杠进行了转义,导致数据一直加签失败 解决办法如下:

json_encode($value,JSON_UNESCAPED_SLASHES );

这样就解决了反斜杠转义的问题。 仔细说明下 json_encode 的使用方法:

string json_encode ( mixed $value [, int $options = 0 [, int $depth = 512 ]] )
  • value : 待编码的 value ,除了 resource 类型之外,可以为任何数据类型。所有字符串数据的编码必须是 UTF-8。
  • options: 由以下常量组成的二进制掩码: JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT, JSON_PRESERVE_ZERO_FRACTION, JSON_UNESCAPED_UNICODE, JSON_PARTIAL_OUTPUT_ON_ERROR。 关于 JSON 常量详情参考 JSON 常量页面。
  • depth : 设置最大深度。 必须大于0 返回值: 成功则返回 JSON 编码的 string 或者在失败时返回 FALSE 。

默认情况下 json_encode 只能传入一个常量,如果想同事传入多个常量怎么办? 一些常量对应的数字如下:

JSON_HEX_TAG => 1
JSON_HEX_AMP => 2
JSON_HEX_APOS => 4
JSON_HEX_QUOT => 8
JSON_FORCE_OBJECT => 16
JSON_NUMERIC_CHECK => 32
JSON_UNESCAPED_SLASHES => 64
JSON_PRETTY_PRINT => 128
JSON_UNESCAPED_UNICODE => 256
JSON_PARTIAL_OUTPUT_ON_ERROR => 512
JSON_PRESERVE_ZERO_FRACTION => 1024

因此可以写成如下方式: JSON_UNESCAPED_UNICODE + JSON_UNESCAPED_SLASHES = 320

json_encode($value,320 );

关于极客返利

极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。

https://geekfl.com

https://geek.laravelcode.cn

版权许可

本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

转载无需与我联系,但须注明出处,注明文章来源 PHP json_encode 的使用方法

联系我

编程怪事
暂无回复
0 / 180