2013-09-26 57 views
3

我將Object從fiddler傳遞到codeigniter中編寫的服務。我的目標是什麼樣子的:獲取JSON響應在Codeigniter中

我的迴應:

{ 
    "GetResponse":{ 
     "OrgName":"adfasd", 
     "OrgAdr1":"asdf", 
     "OrgAdr2":"NA", 
     "ProductList":[ 
      { 
       "ProductID":8724, 
       "Pallets":0, 
       "Pieces":0, 
       "Description":"sdfsd" 
      } 
     ] 
    } 
} 

我想要什麼:

我想保存響應爲笨JSON對象,也希望獲取主對象內的JSON對象或數組。

我試了一下:

我的笨服務的方法是這樣的:

public function Save() 
{ 
    $Data = json_decode(file_get_contents('php://input')); 
    echo $Data; 
} 

但我在響應得到什麼身體裏面提琴手。

如果我用這個代碼:

$Data = file_get_contents('php://input'); 
echo $Data; 

則顯示我的反應,但在字符串的形式。我想將它保存爲JSON對象。

誰能告訴我我在這裏錯過了什麼?

+0

你的回覆不是有效的json string.check this here http://json.parser.online.fr –

+0

@RajeevRanjan它只是一個額外的「,」(逗號)。我解決了它PLZ現在檢查它 –

+0

嘗試var_dump(); –

回答

6

使用該代碼:

header('Content-type: application/json'); 

$Data = json_decode(file_get_contents('php://input'),true); 

現在,您將獲得$Data作爲數組。

並且您通過$Data['name']獲得價值。

+0

它的工作..... :) –

0

要將任何值編碼爲JSON,我們必須使用json_encode()。你做了什麼錯誤,你正在解碼一個非json對象。所以結果爲null。

public function Save() 
    { 
     $Data = json_encode(file_get_contents('php://input')); 
     echo $Data; 
    } 
+0

在給定的代碼中?(請忽略此評論) –

+1

這沒有任何意義。你也應該解釋你的答案。 – Bhavin

2

json_decode()解析JSON字符串中的對象或關聯數組形式的PHP變量。 json_encode()是相反的。

我認爲發生的事情是php://input已經是json格式。當您通過json_decode()運行它,你把它變成一個PHP對象,當echo版應該拋出像類stdClass的的

對象的錯誤不能被轉換成字符串....

如果錯誤報告被壓制,腳本停在那裏,你什麼也沒有得到迴應。

0

json_decode()回報爲對象或數組,所以你的保存()應該是這樣的

public function Save() 
{ 
    $Data = json_decode(file_get_contents('php://input')); 
    echo '<pre>'; 
    print_r($Data); 
} 

輸出將是: -

stdClass Object 
(
    [GetResponse] => stdClass Object 
     (
      [OrgName] => adfasd 
      [OrgAdr1] => asdf 
      [OrgAdr2] => NA 
      [ProductList] => Array 
       (
        [0] => stdClass Object 
         (
          [ProductID] => 8724 
          [Pallets] => 0 
          [Pieces] => 0 
          [Description] => sdfsd 
         ) 

       ) 

     ) 

) 
0

試試這個,

public function Save() 
{ 
    $Data = json_decode(file_get_contents('php://input')); 
    var_dump($Data); 
}