当我将它编码为JSON时,如何获取simpleXML数组对象的内容?

时间:2010-11-22 22:16:16

标签: php json twitter

我有一个php函数,它从twitter获取并返回tweet数据作为simplexml对象。我可以使用php语法获取其内容。这是php函数

<?php

    function searchResults($q) {
    $host = "http://search.twitter.com/search.atom?q=" . urlencode( $q ) . "&rpp=100";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $host);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

    //Raw xml
    $result = curl_exec($ch);
    curl_close($ch);
    $xml = simplexml_load_string($result);
    return $xml;
    }            
?>

如果我称之为

$xml = searchResults('xyz');

我可以像

一样获取其内容
echo $xml->content.''.$xml->author->name;

现在我需要以JSON格式从php函数返回它。像

return json_encode($xml);

尽管

return $xml;

那么,当我解码json时,如何以JSON格式从中获取相同的'content'和'author-&gt; name'等内容。

2 个答案:

答案 0 :(得分:2)

如果由于任何其他原因而不需要XML而不是将其作为JSON返回,为什么不使用json格式作为Twitter API调用的响应? http://search.twitter.com/search.json?q=blablabla 这将返回您可以返回的JSON字符串中的响应。

我会像这样重写你的代码:

<?php

function searchResults($q) {
    $host = "http://search.twitter.com/search.json?q=" . urlencode( $q ) . "&rpp=100";

    $raw_json = file_get_contents($host);

    return $raw_json;
}

?>

答案 1 :(得分:1)

这取决于。如果您从PHP访问它,有两种方法:

$obj = json_decode($json);
echo $obj->author->name;

$arr = json_decode($json, true);
echo $arr['author']['name'];

如果您使用JavaScript访问它,则应该是:

alert(jsObject.author.name);