【问题标题】:How to consume clean JSON from twitter in php如何在 php 中使用来自 Twitter 的干净 JSON
【发布时间】:2014-12-08 06:48:06
【问题描述】:

可能我在这里遗漏了一些非常基本的东西,但这是我尝试过的,在某些情况下我的 JSON 不是有效的 JSON。

代码 -

$hash_tag = $_POST['hash_tag'];
$url = 'https://api.twitter.com/1.1/search/tweets.json';
$getfield = "?q=#".$hash_tag."&count=30";
$requestMethod = 'GET';
$twitter = new TwitterAPIExchange($settings);
$data = $twitter->setGetfield($getfield)
             ->buildOauth($url, $requestMethod)
             ->performRequest();
$tdata = json_decode($data);
$newArr0 = array();

foreach($tdata as $k=>$v) {
    if($k == "statuses")
        $newArr0 = $v;
}

foreach ($newArr0 as &$nval1) {
    unset($nval1->source);
    if(isset($nval1->retweeted_status)) {
        unset($nval1->retweeted_status);
    }
}
//stripslashes($newArr0);
$myarray = array('response'=>'1','message'=>'Tweet result', 'tweet_data'=>$newArr0);
echo json_encode($myarray);

就像我搜索了 Britney 但它给了我一个无效的 JSON - JSON

错误 -

第 623 行解析错误:

...        "location": "WVU 2017 \u
-----------------------^
Expecting 'STRING', 'NUMBER', 'NULL', 'TRUE', 'FALSE', '{', '['

但是,如果我搜索“sachin”,我会得到有效的 JSON,请告诉我我在这里做错了什么,因为我需要将 JSON 编码流从后端发送到移动设备。

【问题讨论】:

    标签: php json twitter foreach


    【解决方案1】:

    JSON 响应不包含错误。错误是您将响应粘贴到 http://jsonlint.com/ 或其他一些服务中,这些服务清楚地在您显示错误的偏移量处切割字符串。

    对于这么长的字符串,请停止使用该服务,并记得检查您粘贴到 PHP 中获得的原始响应中的内容。

    此外,当您遇到此类问题时,请将您的逻辑分割成更小的部分。比如

    $tdata = json_decode($data);

    在这之后做一个

    var_dump($tdata); die;

    因为您想在获取并解码响应并将原因缩小到失败后删除您正在做的任何事情。其余代码是在调试响应时,只是噪音。

    如果你只在顶部运行代码,而不是手动复制粘贴它,它可以正常工作..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多