Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中解析JSON响应_Php_Json_Mailgun - Fatal编程技术网

在PHP中解析JSON响应

在PHP中解析JSON响应,php,json,mailgun,Php,Json,Mailgun,我有一个MailGun帐户,我正在制作一个PHP脚本,可以抓取发送到我设置的MailGun电子邮件地址的电子邮件附件 当电子邮件发送到该地址时,MailGun会向下面的我的PHP脚本发送一个通知,其中包含一个指向JSON格式的完整消息内容的URL。然后我去抓住那个信息。在那之前一切正常。我得到了完整的JSON消息——问题是如何使用JSON 以下是我到目前为止对PHP脚本的了解 // Grab contents of message ( Already in JSON format (i thin

我有一个MailGun帐户,我正在制作一个PHP脚本,可以抓取发送到我设置的MailGun电子邮件地址的电子邮件附件

当电子邮件发送到该地址时,MailGun会向下面的我的PHP脚本发送一个通知,其中包含一个指向JSON格式的完整消息内容的URL。然后我去抓住那个信息。在那之前一切正常。我得到了完整的JSON消息——问题是如何使用JSON

以下是我到目前为止对PHP脚本的了解

// Grab contents of message ( Already in JSON format (i think ? ))
$json = file_get_contents($api_url);
$json2 = json_decode($json);

foreach($json2->attachments->url AS $attach) {

    file_put_contents('test.txt', $attach, FILE_APPEND);

}
$json
变量返回以下内容(编辑了大部分不必要的代码):

{
“附件”:[
{
“url:“fullMailGunURLtoAttachment.jpg”,
“内容类型”:“图像/jpeg”,
“名称”:“logo lrg.jpg”,
“尺寸”:45465
}
],
“正文html”:“\r\n\r\n\r\n\t\t\t\t\r\n”,
“Mime版本”:“1.0”,
“日期”:“2013年9月19日星期四18:11:12+0000”,
“X-Tmn”:“[Skvi/kuHvvUw+DlCaQ0136pus9MAs4jm]”,
“内容类型”:“多部分/混合;边界=\”\u 733f5ac1-abe1-41b0-9f42-03a4ae524b70,
“正文普通”:“\t\t\t\t”,
“主题”:“66666”
}
我最终会将其编码为获取附件URL,并使用另一个经过身份验证的请求将其存储到本地文件系统中。身份验证和调用不是问题所在。我的问题是如何在PHP中处理上面返回的代码。我尝试过变体,但从以下方面得到了错误:

PHP注意:尝试获取非对象的属性

PHP警告:为foreach()提供的参数无效

当我试图在循环中使用
$json->attachments
而不是
$json2->attachments


任何帮助都会很好

你很接近。在JSON对象中,URL更深一层。您需要按以下方式访问它:

foreach ($json2->attachments as $value) {
    echo $value->url;
}

问题是,此脚本无法直接访问,因此我无法查看。当MailGun向脚本发送他们的“通知”帖子时,一切都是“运行”的。我将尝试更改我的代码来测试它,并发送一封带有附件的测试电子邮件。请稍候:)这是-PHP致命错误的结果:无法将stdClass类型的对象用作array@JesseWilliamSzypulski:看起来您正在尝试执行
echo$value['url']
。与此同时,它也得到了更新。试试最新版本的代码。太棒了!真管用!现在test.txt文件包含URL的内容-@JesseWilliamSzypulski:很高兴我能帮上忙!
foreach ($json2->attachments as $value) {
    echo $value->url;
}