1

我正在尝试通过聚会开放事件流 API 获取聚会事件数据。

http://www.meetup.com/meetup_api/docs/stream/2/open_events/

我正在使用以下代码获取数据:

// Open a stream in read-only mode
if (!($stream = fopen("http://stream.meetup.com/2/open_events", 'r'))) {
    die('Could not open stream for reading');
}

// Check if the stream has more data to read
while (!feof($stream)) {
    // Read 1024 bytes from the stream
    $data= fread($stream, 1024);

    echo '<pre>';
    echo ($data);
}
// Be sure to close the stream resource when you're done with it
fclose($stream);
exit;

上面的代码正在返回结果,数据是 json 格式,然后我必须对其进行解码。我可以使用 php 'json_decode' 函数对其进行解码。但我面临的问题是我收到了 json 对象数据,有时是完整的对象,有时是半个对象,无法在 php 中解码。

对我的代码或其他代码示例的任何帮助都会非常有帮助和感激。

4

1 回答 1

1

问题很可能

fread($stream, 1024);

如果 JSON 比这 1024 个字节长,你会得到损坏的对象。要么增加长度,要么使用fgets不带长度参数的替代方法,或者使用这个更短的替代方法:

$stream = new SplFileObject("http://stream.meetup.com/2/open_events");
while (!$stream->eof()) {
    var_dump(json_decode($stream->fgets()));
}
于 2013-11-05T13:42:04.840 回答