从外部URL检索Json数据

时间:2013-05-10 08:43:15

标签: php

我很难从API获取一些json数据。基本上我想获取文件内容,然后将“meta_game”分配给变量,我还希望将“channel_count”分配给变量。正如你在这里看到的,我为这两个实例尝试了两种不同的方法,但目前都没有。

$json = file_get_contents($chan);
$json_data = unserialize($json);
$gameName = json_decode($json)->meta_game;
$viewerCount = $json_data['channel_count'];

下面是一个网址示例:http://api.justin.tv/api/stream/list.json?channel= +频道名称。

3 个答案:

答案 0 :(得分:3)

为什么要反序列化数据?它不是必需的

$json = file_get_contents('http://api.justin.tv/api/stream/list.json?channel=' . $channelName);
$jsonData = json_decode($json);

$gameName = $jsonData->meta_game;

$viewerCount = $jsonData->channel_count;

当然,您可能需要检查$jsonData对象的路径以找到您的最终值,因为我没有解析它,并且无法保证它们位于第一个节点。

更新:因为我不能单独处理,所以我检查了这个以查看API的响应是什么

首先返回一个数组,你的路径将是

$jsonData[0]->channel->meta_game;

$jsonData[0]->channel_count;

假设您在回复中只有1个频道

答案 1 :(得分:1)

你可以尝试下面的代码

<?php
$json = file_get_contents('http://api.justin.tv/api/stream/list.json?channel=');
$gameName = json_decode($json,true);
$new_arr = array();
foreach($gameName as $g){
print_r( $g['channel']['meta_game']);
 array_push($new_arr,$g['channel']['meta_game']);
}    
?>

答案 2 :(得分:0)

(function($){
    $.fn.fetch = function() {
        $.ajaxSetup({ cache: true });
        //var optionsWithDefaults = $.extend(defaults, options);
        return this.each(function() {
            var obj = [];
            $.getJSON(' http://api.justin.tv/api/stream/list.json?channel=xxx',
                function(data) {
                    $.each(data, function(i, feed) {
                        if(feed.channel_count !== undefined) {
                            obj.push(feed.channel_count);
                        }
                    });
                }
            );
        });
    };
})(jQuery);