2014-12-08 51 views
-1

可能是我缺少一些非常基本的東西,但這是我嘗試過的,在某些情況下,我的JSON不是有效的JSON。如何從php中使用乾淨的JSON php

代碼 -

$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); 

像我搜索布蘭妮,但它給了我一個無效的JSON - JSON

錯誤 -

上線

解析錯誤623:

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

但是,如果我搜索「sachin」我得到有效的JSON,讓我知道我在做什麼錯誤,因爲我需要從後端發送JSON編碼流到移動設備。

回答

1

JSON響應不包含錯誤。錯誤在於您將響應粘貼到http://jsonlint.com/或某些其他服務中,這些服務明確地將字符串切割到您顯示錯誤的偏移量處。

停止使用這種長字符串的服務,並記得檢查你粘貼到你在PHP中獲得的原始響應。另外,當你有這樣的問題時,把你的邏輯切成更小的部分。如

$tdata = json_decode($data);

在此之後做了

var_dump($tdata); die;

,你要切出任何你正在和響應解碼和縮小的原因失敗後做什麼。其餘的代碼是在調試響應時,只是噪聲。

如果您只運行在頂部的代碼,而不是手動複製粘貼它,它工作正常..