在PHP中解析JSON响应

时间:2013-09-19 19:10:24

标签: php json mailgun

我有一个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变量返回以下内容(编辑了大部分不必要的代码):

{
   "attachments":[
      {
         "url":"fullMailGunURLtoAttachment.jpg",
         "content-type":"image/jpeg",
         "name":"logo-lrg.jpg",
         "size":45465
      }
   ],
   "body-html":"<html>\r\n<head>\r\n<style><!--\r\n.hmmessage P\r\n{\r\nmargin:0px;\r\npadding:0px\r\n}\r\nbody.hmmessage\r\n{\r\nfont-size: 12pt;\r\nfont-family:Calibri\r\n}\r\n--></style></head>\r\n<body class='hmmessage'><div dir='ltr'> \t\t \t   \t\t  </div></body>\r\n</html>",
   "Mime-Version":"1.0",
   "Date":"Thu, 19 Sep 2013 18:11:12 +0000",
   "X-Tmn":"[Skvi/kuHvvUw+DlCaQ0136pus9MAs4jm]",
   "Content-Type":"multipart/mixed; boundary=\"_733f5ac1-abe1-41b0-9f42-03a4ae524b70_\"",
   "body-plain":" \t\t \t   \t\t  ",
   "Subject":"66666"
}

我最终将对其进行编码以获取附件URL并将其存储到我的本地文件系统中,并使用另一个经过身份验证的请求。身份验证和调用不是问题。我的问题是在PHP中使用上面返回的代码。我尝试了各种变化,并从以下方面得到任何错误:

  

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

  

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

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

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

你很亲密。在您的JSON对象中,URL更深层次。您需要访问它,如下所示:

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

Demo!