2014-11-08 61 views
0

嘿所有我已經從Facebook的API收集一些信息,下面的PHP腳本:Facebook的HTTP飼料返回數組,而不是JSON

$request = (new FacebookRequest(
    $session, 'GET', '/me/home' 
)); 

$response   = $request->execute(); 
$graphObject  = $response->getGraphObject()->asArray(); 
print_r($graphObject); 

然而,這份輸出看起來是這樣的:

Array 
(
    [data] => Array 
    (
     [0] => stdClass Object 
      (
       [id] => xxxxxxx78552_74905xxxxxxxx 
       [from] => stdClass Object 
        (
         [id] => 72xxxxxx05xxxx52 
         [name] => Tom xxxxxx 
        ) 

       [story] => Tom xxxx shared xxxxx xxxxx's status update. 
       [story_tags] => stdClass Object 
     etc etc.... 

我知道我爲什麼得到一個數組(asArray();)但我需要將它轉換爲JSON。我試着通過VB.net的JSON.net這樣做:

result = mainPage.theNewsFeed 
objWriter = New System.IO.StreamWriter(Application.StartupPath & "\home.json", False, Encoding.UTF8) 
objWriter.Write(JSONDeserialize(result).ToString) 
objWriter.Close() 

上面的代碼會產生這樣的錯誤:

Unexpected character encountered while parsing value: A. Path '', line 0, position 0.

就行了:

objWriter.Write(JSONDeserialize(result).ToString) 

,我可以理解,因爲其不是正確的json格式。

如何使用PHP或VB.net將它轉換爲正確的格式?

回答

0

那麼要在PHP中輸出一個數組作爲JSON,你想使用它的json_encode函數並使用你的數組作爲參數。它會返回一個JSON字符串。

$json = json_encode($graphObject); 

我沒有使用VB.net的經驗,但我假設你使用了錯誤的方法。

序列化意味着對象或數組將被轉換爲字符串表示形式(如JSON)。反序列化意味着字符串將被轉換爲對象或數組。

所以你使用的方法實際上是期待一個JSON而不是創建它。