当前位置: 首页 > 面试题库 >

网络服务调用后 json_decode 返回NULL

裴浩歌
2023-03-14
问题内容

和存在一种奇怪的行为,json_encode而json_decode我找不到解决方案:

我的php应用程序调用了php Web服务。Web服务返回的json如下所示:

var_dump($foo):
string(62) "{"action":"set","user":"123123123123","status":"OK"}"

现在我想在应用程序中解码json:

$data = json_decode($foo, true)

但它返回NULL:

var_dump($data):
NULL

我使用php5。来自Web服务的响应的Content-Type :("text/html; charset=utf-8"也尝试使用"application/json; charset=utf-8")

可能是什么原因?


问题答案:

编辑: 只是做了一些快速检查由OP提供的字符串。大括号前面的小“字符”是UTF-8 B(yte)O(rder)M(ark) 0xEF 0xBB 0xBF。我不知道为什么此字节序列显示为此处。

本质上,您从中获取数据的系统将其发送为以UTF-8编码的数据,并在数据之前添加BOM。您应该先从字符串中删除前三个字节,然后再将其放入json_decode()(a substr($string, 3)会这样做)。

string(62) "{"action":"set","user":"123123123123","status":"OK"}"
            ^
            |
            This is the UTF-8 BOM

正如黑木风(Kuroki Kaze)所发现的那样,这个角色肯定是json_decode失败的原因。给定格式的字符串不是JSON格式的正确结构(请参阅RFC 4627)



 类似资料:
  • 问题内容: 和存在一种奇怪的行为,json_encode而json_decode我找不到解决方案: 我的php应用程序调用了php Web服务。Web服务返回的json如下所示: 现在我想在应用程序中解码json: 但它返回NULL: 我使用php5。来自Web服务的响应的也尝试使用 可能是什么原因? 问题答案: 编辑: 只是做了一些快速检查由OP提供的字符串。大括号前面的小“字符”是。我不知道为

  • 问题内容: 我需要我的Web服务以返回JSON … 我的.asmx文件中包含以下代码: 返回以下内容: 如何强制它返回JSON而不是XML? 问题答案: 您的Web服务定义看起来正确。确保通过帖子调用服务,并记住该键将“内容类型”标头指定为。 (这是使用jQuery,但如果您愿意,可以使用低级JavaScript)

  • 网络服务提供弹性公网IP、NAT网关、DNS解析等功能。 弹性公网IP 弹性公网IP(Elastic IP)是一种NAT IP,通过与虚拟机绑定,将弹性公网IP与虚拟机的私有地址进行NAT映射,实现虚拟机与公网之间的通信。 NAT网关 NAT网关能够为公有云VPC网络中虚拟机提供IP地址转换功能,使虚拟机可以访问外网或提供互联网服务。 DNS解析 DNS解析用于将简单好记的域名解析为计算机用于通信

  • 问题内容: 我的JSON有问题。它可以在PHP 5.3中正确返回(因此我不能使用json_last_error()),并且在我将字符串显式复制到json_decode(json_decode(’{…}’)中时成功返回。结果作为变量,我正在使用php 5.2,这是我需要的。 输出来自PHPUnit中的JSON日志记录: 编辑:这些是我一直在探索的路径-也许您是一个更好的探索者。.三种可能的路径可以帮

  • 我一直试图让spark在我的本地机器上运行kubernetes。然而,我在试图理解服务网络是如何工作的方面遇到了一个问题。 我在笔记本电脑上用容器运行kubernetes: null kubectl create-f Kubernetes/examples/spark/spark-master-controller.yaml kubectl create-f Kubernetes/examples

  • Twisted Twisted 是一个事件驱动的网络引擎。他可以被用来构建多种网络协议的应用程序,包括:HTTP 服务器和客户端;使用 SMTP、POP3、IMAP 或者 SSH 协议测应用程序和 IM (即时消息)等应用 更多。 PyZMQ PyZMQ 是 ZeroMQ 的 Python 绑定。ZeroMQ 是一个高性能的异步消息库,它的一个很大的优势在于其可以被用作一个消息队列而不需要消息代理