我目前正致力于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
答案 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'];