2014-11-08 65 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而不是创建它。