php - 为什么必须对 JSON 字符串执行 preg_replace,以避免 json_decode 出现 null?
问题描述
我正在使用一个旧系统,它向我发送了一些 JSON。我被一个错误困住了一段时间,如果我使用它解析json_decode( $json_string, true);
它然后返回null
.
我在这里找到了解决方案,就是这样做:
json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true );
不过,我不明白为什么会这样。谷歌搜索这些字符告诉我,这是一些“不可读的字符”。但我不知道它们的用途是什么;他们为什么在那里。
而且......这让我怀疑,现在每次我解码 JSON 字符串时,使用这个系统,print_r
必须确保解析的 JSON 不为空(因为 JSON 并不总是包含坏字符)。
更进一步,然后我可以阅读一些评论,在那里我找到了解决方案,应该小心删除这些字符。
我正在通过执行以下操作检索 JSON 字符串:file_get_contents( 'https://example.org/the-endpoint' );
所以这导致了三个问题:
- 如果我总是这样 json_decoded,我可能会遇到什么错误?
function improved_json_decode( $json_string ){
return json_decode( preg_replace('/[\x00-\x1F\x80-\xFF]/', '', $json_string), true );
}
为什么会发生这种情况?精灵添加角色还是发生了什么?
我应该(并且我可以)检查一个 JSON 字符串,如果它是“可解析的”吗?
解决方案
推荐阅读
- python - Jetson Nano 运行测试相机代码错误
- flutter - 我应该用什么替换 YOUR_RELEASE_KEY_ALIAS 和 YOUR_RELEASE_KEY_PATH 以在颤振中使用 facebook 登录?
- fuzzing - 使用 AFL++ 进行二进制模糊测试
- bash - 无法解决 getopt 选项
- python - 无法在带有 BigSur 的 Mac M1 上使用 keras 模型
- highcharts - highcharts - 需要每 5 秒在 x 轴上自动滚动一次,并隐藏滚动条
- log4j2 - log4j2j 中的 monitorInterval 用于刷新自定义属性
- mysql - SQLSTATE [42000] [1044] 拒绝用户 'bmsswsxf_shahed'@'localhost' 访问数据库
- node.js - 使用 AWS RDS Postgresql 作为数据库的 NodeJs 中的分片,作为 ORM 的 Sequelize
- pytorch - 为什么 GPT2Model 的某些权重没有初始化?