PHP:JSON_DECODE不适用于以下数据
我试图用下面的代码来解码这个json数据,但它不起作用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中的回调参数。与此相反: 使用以下命令: 然后
$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减少额外的数据,这是一个很好的回退。