2013-09-26 2 views
0

Я использую API, который дает мне очень странный формат JSON .. я отправляю свои данные, которые я получаю через это ..как преобразовать эти данные в формате JSON в PHP

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, но я не в состоянии сделать that..nothing показывает на веб-странице, .... Мой код есть ..

Сначала я попытался,

<?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 преобразованный ...

+0

'$ url =" http://www.website-name.com/itemInfo/?video_id=IN7o2Iy89WQ&ac=www ";' это отправка JSON? Ты уверен? –

+0

Можете ли вы 'var_dump ($ info);' после второй и третьей строки и показать нам результат? – TheWolf

+0

@SasankaPanguluri plaese проверить сейчас .. – Kapil

ответ

1

Данные, которые я получил от URL-адреса в вашем примере:

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, это также работало бы как JSON, если вы удалили «info =» и точку с запятой. Предполагая, что ответы предсказуемы, вы можете сделать это с помощью php str_replace, но поиск API, который возвращает JSON для вашего источника, будет более надежным и чистым решением.

+0

Я думаю, что вы правы ... Как это сделать в javascript любая идея? – Kapil

0

Если вы получаете NULL, когда вы указали var_dump($info) на второй строке, как вы упомянули в комментариях, то file_get_contents() не извлекает данные.

Это, скорее всего, потому что allow_url_fopen установлен в ложь в php.ini

+0

получение ошибки Предупреждение: неверный аргумент для foreach() в /home/lpmqcrax/public_html/download/info.php в строке 4 – Kapil

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']; 
+0

получение ошибки ... Неустранимая ошибка: нельзя использовать объект типа stdClass как массив в/home/lpmqcrax /public_html/download/info.php в строке 8 – Kapil

+0

@Kapil К сожалению, отсутствует второй аргумент json_decode. Сейчас он работает :-) – Nico

+0

Ты сделал мой день. Спасибо .... – Kapil

0

Принимает закодированную строку JSON и преобразует ее в переменную PHP. Если для второго параметра установлено значение true, он возвращает массив!

SO Ваша первая и вторая попытка неправильная.! Он должен работать третьей попыткой. Просто проверьте, извлекаете ли вы данные.

Смежные вопросы