PHP:JSON_DECODE不适用于以下数据

PHP:JSON_DECODE不适用于以下数据,php,jsondecoder,Php,Jsondecoder,我试图用下面的代码来解码这个json数据,但它不起作用 $data = 'VA_OnQueryData({"name":"John","id":"354902332592"});'; return json_decode($data); 它不起作用,因为它不是json。请尝试以下方法: $data = '{"name":"John","id":"354902332592"}'; return json_decode($data); 去掉URL中的回调参数。与此相反: 使用以下命令: 然后

我试图用下面的代码来解码这个json数据,但它不起作用

$data = 'VA_OnQueryData({"name":"John","id":"354902332592"});';
return json_decode($data);

它不起作用,因为它不是json。请尝试以下方法:

$data = '{"name":"John","id":"354902332592"}';
return json_decode($data);

去掉URL中的
回调
参数。与此相反:

使用以下命令:

然后,您将得到真正有用的JSON

您使用的方法过去是,过去是通过发送可执行JavaScript来绕过跨域问题的。由于,客户端不再需要此方法,服务器端也不再需要此方法


另外,回到制作此API的人那里,告诉他们使用了错误的
内容类型
响应标题。他们正在发送
text/html
。。。它应该是
application/json
。(Ref:)

您好,您试图解码的是无效的json

如果必须以这种方式进行操作,则首先需要按照以下步骤进行清洁:

$data = 'VA_OnQueryData({"vin":"1C6RR6LT3HS847897","id":"697015470432","attributes":{"VIN":"1C6RR6LT3HS847897","Year":"2017","Make":"Ram","Model":"1500","Trim":"Lone Star","Made In":"United States","Style":"Crew Cab Pickup (4-Door)","Engine":"5.7L V8 OHV 16V"},"success":true,"error":""});';

preg_match('/{.*}/', $data, $cleaned);

return json_decode($cleaned[0]);
其输出为:

stdClass Object
(
    [vin] => 1C6RR6LT3HS847897
    [id] => 697015470432
    [attributes] => stdClass Object
        (
            [VIN] => 1C6RR6LT3HS847897
            [Year] => 2017
            [Make] => Ram
            [Model] => 1500
            [Trim] => Lone Star
            [Made In] => United States
            [Style] => Crew Cab Pickup (4-Door)
            [Engine] => 5.7L V8 OHV 16V
        )

    [success] => 1
    [error] => 
)

这不是JSON
{“name”:“John”,“id”:“354902332592”}
是JSON,外部看起来像JS调用。@SilaKhatun这个API很可能提供了正确的JSON格式。使用它,它看起来更像一个JSONPresponse@SilaKhatun,谢谢你的回答,但我必须解码这个数据$data='VA_OnQueryData({“name”:“John”,“id”:“35490232592”);因为我是从API获得这种格式的。该死,你比我快。@SilaKhatun如果你觉得这个答案有用,你可以通过单击它旁边的复选标记来接受它作为你问题的答案。然后,它将反弹到未来读者的顶部。谢谢。如果他不能告诉API减少额外的数据,这是一个很好的回退。