PHP获取URL中的JSON

3

我有一个URL,返回一个JSON对象,内容如下:

[
    {
        "idIMDB": "tt0111161",
        "ranking": 1,
        "rating": "9.2",
        "title": "The Shawshank Redemption",
        "urlPoster": "http:\/\/ia.media-imdb.com\/images\/M\/MV5BODU4MjU4NjIwNl5BMl5BanBnXkFtZTgwMDU2MjEyMDE@._V1_UX34_CR0,0,34,50_AL_.jpg",
        "year": "1994"
    }
]

URL: http://www.myapifilms.com/imdb/top

我想获取所有的urlPoster值并将其设置为数组元素,然后将数组转换为JSON格式再进行输出。

通过PHP该如何做呢?


你尝试过使用 json_decode() 吗? - Sayed
4个回答

9
您可以像这样做:
<?php 
$json_url = "http://www.myapifilms.com/imdb/top";
$json = file_get_contents($json_url);
$data = json_decode($json, TRUE);
echo "<pre>";
print_r($data);
echo "</pre>";
?>

8
$json = file_get_contents('http://www.myapifilms.com/imdb/top');

$array = json_decode($json);

$urlPoster=array();
foreach ($array as $value) { 
    $urlPoster[]=$value->urlPoster;
}

print_r($urlPoster);

0

您可以简单地解码JSON,然后选择您需要的内容:

<?php
$input = '[
        {
                "idIMDB": "tt0111161",
                "ranking": 1,
                "rating": "9.2",
                "title": "The Shawshank Redemption",
                "urlPoster": "http:\/\/ia.media-imdb.com\/images\/M\/MV5BODU4MjU4NjIwNl5BMl5BanBnXkFtZTgwMDU2MjEyMDE@._V1_UX34_CR0,0,34,50_AL_.jpg",
                "year": "1994"
        }


]';

$content = json_decode($input);
$urlPoster = $content[0]->urlPoster;
echo $urlPoster;

显然输出的是存储在该属性中的URL:

http://ia.media-imdb.com/images/M/MV5BODU4MjU4NjIwNl5BMl5BanBnXkFtZTgwMDU2MjEyMDE@._V1_UX34_CR0,0,34,50_AL_.jpg

顺便说一句:“肖申克的救赎”是有史以来最好的电影之一...


0

这是使用array_map函数完成相同操作的方法。

<?php

#function to process the input
function process_input($data)
{
 return $data->urlPoster;
}

#input url
$url = 'http://www.myapifilms.com/imdb/top';


#get the data
$json = file_get_contents($url);

#convert to php array
$php_array = json_decode($json);

#process the data and get output
$output = array_map("process_input", $php_array);


#convert the output to json array and print it
echo json_encode($output);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接