我正在使用API,响应很奇怪。我需要从下面的响应中获取ID字段。
{
"message_campaigns": [
{
"embedded_errors": [],
"id": "2729",
"is_legacy_message": false,
"is_setup_complete": false,
"message_campaign_type_id": 1,
"name": "Message Campaign 1",
"organization_id": 123
}
]
}
以下是我的尝试:
$result = curl_exec($ch);
curl_close($ch); // Seems like good practice
$responseData = json_decode($result, TRUE);
print_r($responseData);
我尝试了几种方法但无法使其正常工作
$responseData[0]['id'];
$responseData->id;
我无法弄清楚如何显示id
。
答案 0 :(得分:0)
这是因为结果是array
,因为您将第二个参数作为true传递给json_decode
:
When TRUE, returned objects will be converted into associative arrays.
在JSON中,{}
代表对象,[]
代表数组。您已将所有对象转换为关联数组,因此这将起作用:
$responseData['message_campaigns'][0]['id']
答案 1 :(得分:0)
您将json_decode的第二个参数设置为true
,因此将返回一个数组(不是对象)。
您还需要访问message_campaigns
作为数组中的第一项。
$responseData['message_campaigns'][0]['id'];
可以测试:
$result = <<< EOT
{
"message_campaigns": [
{
"embedded_errors": [],
"id": "2729",
"is_legacy_message": false,
"is_setup_complete": false,
"message_campaign_type_id": 1,
"name": "Message Campaign 1",
"organization_id": 123
}
]
}
EOT;
$responseData = json_decode($result, TRUE);
echo $responseData['message_campaigns'][0]['id'];
// 2729
答案 2 :(得分:0)
假设你的curl_exec实际上返回了一个响应,因为你设置了curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
如果我看一下你需要的json回复:
$responseData['message_campaigns'][0]['id'];