json_解码中的PHP额外字符

json_解码中的PHP额外字符,php,api,json,last.fm,Php,Api,Json,Last.fm,最后一个.fm API返回一个JSON字符串,我使用 json_decode($response, ($returnType == 'array')); 当响应被转储时,它会给我以下json字符串: {"session":{"name":"turncoat9","key":"b311abDee2d34e07541eeeefted2bad","subscriber":"0"}} 1 (注意最后的1) 由于这个额外的字符,json字符串无法转换为关联数组,因此我的问题就出现了 我发现一些讨论指出

最后一个.fm API返回一个JSON字符串,我使用

json_decode($response, ($returnType == 'array'));
当响应被转储时,它会给我以下json字符串:

{"session":{"name":"turncoat9","key":"b311abDee2d34e07541eeeefted2bad","subscriber":"0"}} 1
(注意最后的1)

由于这个额外的字符,json字符串无法转换为关联数组,因此我的问题就出现了

我发现一些讨论指出1是一个BOM(字节顺序掩码)字符,但提供的所有解决方案都不能与我的json字符串一起使用

这个角色是什么?为什么会出现这种情况?为什么我在本地开发时不会出现这种情况? 解决这个问题的办法是什么


在两个不同的Web服务器上尝试了此操作,得到了相同的结果

您可以使用trim将其删除:

$cleaned_json = trim($received_json, '1 ');

首先,我不明白
($returnType=='array')
,您应该只在那里输入
TRUE

assoc
->
如果为TRUE,返回的对象将转换为关联数组。


第二,您从API中得到了什么答案?您确定它只返回json字符串吗?

$returnType是一个参数。所以当这个参数等于“array”时,它将为真,所以是的。下面是“true”:)接下来:一切都在本地运行,所以我基于Json字符串编写了所有代码,所有代码都以我希望的方式返回。我很确定您在某个地方有一个echo,可能是不同的文件编码?关闭了
?>
并在后面留下了一些空格?但是为什么回音会在json字符串中呢?我猜这是last.fm的响应。@mihal lorga如何检查文件编码?有些编辑器错误地将文件保存为Unicode,使用您最喜欢的编辑器打开并将文件另存为ANSI或UTF-8。如果有,请尝试修剪1以及修剪空间-如果您只修剪1而不是尾部空间-它实际上不是json格式,而是字符串-额外的一个仅在die()时显示