2013-08-05 33 views
-1

我想盡我所能解釋這一點,請問我對某事不太清楚。 我正在使用一個API,在那裏我得到一堆關於傳感器的信息。從JSON_DECODE獲取一定的信息

這是一類

public function getSensors() 
{ 
    $params = array(); 
    return json_decode($this->consumer->sendRequest(constant('REQUEST_URI').'/sensors/list', $params, 'GET')->getBody()); 

在我的index.php

$params = array('id'=> XXXXXX); 
$response = $consumer->sendRequest(constant('REQUEST_URI').'/sensor/info', $params,'GET'); 

echo json_decode($response->getBody()); 

這給我的信息,這樣的塊的方法:

{"id":"xxxxx","client":"xxxx","name":"xxxxx","lastUpdated": xxxx} 

我只想用一些該信息。

這是getBody()如果​​您使用的是API,你無法控制你所得到的信息,除非API定義這樣做的方法方法 -

public function getBody() { 
    if (self::METHOD_POST == $this->method && (!empty($this->postParams) || !empty($this->uploads))) { 

     if (0 === strpos($this->headers['content-type'], 'application/x-www-form-urlencoded')) { 

      $body = http_build_query($this->postParams, '', '&'); 

      if (!$this->getConfig('use_brackets')) { 

       $body = preg_replace('/%5B\d+%5D=/', '=', $body); 

      } 

      // support RFC 3986 by not encoding '~' symbol (request #15368) 

      return str_replace('%7E', '~', $body); 



     } elseif (0 === strpos($this->headers['content-type'], 'multipart/form-data')) { 

      require_once 'HTTP/Request2/MultipartBody.php'; 

      return new HTTP_Request2_MultipartBody(

       $this->postParams, $this->uploads, $this->getConfig('use_brackets') 

      ); 

     } 

    } 

    return $this->body; 

} 
+0

'所以我可以修改它與CSS'你是什麼意思的 – meda

+0

回聲json_decode()應該無法工作,如果響應正文是一個正確的JSON對象,你會試圖回聲一個PHP目的。 JSON_Decode對JSON字符串進行解碼並返回一個PHP對象,然後您可以對其進行操作以選擇性地輸出或輸出爲HTML。亞歷山大 - –

+0

- 感謝您的迴應。我不確定我是否遵守。最後一部分是PHP對象嗎?如果是這樣,我怎麼操縱它?謝謝。 – Trollgubbe

回答

0

。如果你正在閱讀傳感器,那麼這不太可能是一種選擇。

儘管如此,你可以忽略你不需要的東西。

例如:

$myArray = json_decode('{"id":"xxxxx","client":"xxxx","name":"xxxxx","lastUpdated": xxxx}'); 
$mySubset = array($myArray['id'], $myArray['lastUpdated']); 

我只是用json_decode來說明這一點。根據您的評論,它看起來像getBody()正在返回一個數組,但您報告的錯誤消息指向一個對象。

對於數組,你可以使用

$myResp = $response->getBody(); 
$myId = $myResp['id']; 

對於一個對象,你可以使用

$myResp = $response->getBody(); 
$myId = $myResp->id; 

道歉,如果我不太切中要害 - 我在這裏燒製有點瞎了!

+0

Mike W - 謝謝!我認爲這是朝正確方向邁出的一步,但getBody()是一個對象,我真的不知道如何使用它。但我把$ response-> getBody()放入json_decode中,我會得到一個錯誤,提示「類stdClass的對象不能轉換爲字符串」。 – Trollgubbe

+0

邁克W - 我會說你發射完全失明,哈哈。我很無能,所以所有的幫助真的很感激。如果我使用一個數組,它說它的「非法字符串偏移量」,如果我使用該方法的對象,它說我想獲得一個非對象的屬性。 – Trollgubbe

+0

然後,我真的無法再幫助 - 我真的需要知道什麼getBody()返回之前,我可以添加任何事情。 – 2013-08-06 01:18:11