使用PHP从HTTP_Request2_Response对象中提取数据

时间:2018-03-06 15:08:48

标签: php json api pear http-request2

我目前正致力于Microsoft Emotion API的回复。在API中,使用HTTP/Request2.php并使用HTTP_Request2_Response (Manual here)中的getBody()成功获取HTTP响应消息。 就像API手册一样,我执行以下操作:

try
{
    $response = $request->send();
    echo $response->getBody();
}

我得到的是这样的:

[
  {
    "faceRectangle": {
      "height":264,
      "left":162,
      "top":523,
      "width":264,

    },
    "scores": {
      "anger":1.38974974E-06,
      "contempt":2.75673688E-08,
      "disgust":3.75520244E-06,
      "fear":5.69216375E-11,
      "happiness":0.999994636,
      "neutral":1.77765841E-07,
      "sadness":3.03275627E-09,
"surprise":2.25669652E-08
    }
  }
]

然而,我只想要“得分”的某些方面,如“愤怒”或“幸福”。我试图在$response上使用json_decode但是我收到了一个错误:json_decode() expects parameter 1 to be string, object given。似乎HTTP_Request2_Response为我提供了一个对象。如何从响应中提取我想要的数据?

以下是var_dump的{​​{1}}供您参考:

$response

2 个答案:

答案 0 :(得分:0)

如果您认为您的回答是对象请尝试使用此代码。

$response = json_decode(json_encode($response), true);

它将返回一个数组而不是对象,然后您可以轻松访问数据。

答案 1 :(得分:0)

$jsonString = $response->getBody();
$bodyAsArray = json_decode($jsonString, true); // true returns associative array
echo $bodyAsArray['scores']['anger'];