如何在php中转换这个json数据

时间:2013-09-26 18:11:10

标签: php api json

我正在使用一个api,它给了我一个非常奇怪的json格式..我发布的数据是我通过它...

info = { "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "f53762dab34022e9d851ab71e0bf166f" };

我正在尝试在php中打印这些数据,但我无法做到这一点......我的网页上没有显示任何内容,.... 我的代码是......

首先我试过,

<?php
$url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www";
$info=file_get_contents($url);
$info=json_decode($info,true);
echo $info;
?>

我的第二次尝试是,

<?php
$url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www";
$info=file_get_contents($url);
$info=json_decode($info,true);
$info->h;
?>

我的最后一次尝试是,

<?php
$url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www";
$info=file_get_contents($url);
$info=json_decode($info,true);
$info['h'];
?>

什么都没发生..

请有人帮助我

API Url已转换...

4 个答案:

答案 0 :(得分:2)

页面正在发送 "info = { "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "058ce93db26fce4a9f1cb41ae2e7c1bb" };"

你不能在这上面使用json_decode,因为最后的info =;不是json。您必须删除info =;

   $url="http://www.website-name.com/a/itemInfo/?video_id=IN7o2Iy89WQ&ac=www";
   $info = file_get_contents($url);
   $info = trim($info, "info = ");
   $info = rtrim($info, ";");
   $json = json_decode($info, true);
   echo $json['status'];

答案 1 :(得分:1)

我从您的示例中的网址获得的数据是

info = { "title" : "Asian Dad: B Again!? (you die)", "image" : "http://i.ytimg.com/vi/IN7o2Iy89WQ/default.jpg", "length" : "2", "status" : "serving", "progress_speed" : "", "progress" : "", "ads" : "", "pf" : "", "h" : "5cddd4d1667f24aa9a0f5a6cc21e24e3" };

这是一个可执行的JavaScript代码段,实际上不是JSON。你的php失败的原因是'info ='部分... json_encode在解码失败时返回null。

虽然这是对JavaScript对象的变量赋值,但如果删除了'info ='和分号,那么它也可以用作JSON。假设响应是可预测的,你可以用php str_replace做到这一点,但找到一个为你的源返回JSON的API将是一个更可靠和干净的解决方案。

答案 2 :(得分:0)

如果您在评论中提到的第二行NULL时收到var_dump($info),则file_get_contents()无法检索数据。

这很可能是因为{。{1}}在PHP.ini中设置为false

答案 3 :(得分:0)

采用JSON编码的字符串并将其转换为PHP变量。如果第二个参数设置为true,则返回一个数组!

所以你的第一次和第二次尝试是错误的。它应该是第三次尝试。只需检查您是否检索数据。