PHP - JSON数组 - 不确定如何提取数据

时间:2016-12-08 22:21:52

标签: php arrays json

我有来自AWS的以下JSON / Array,我很难用PHP阅读它:

{
  "Type" : "Notification",
  "MessageId" : "666483cb-e012-51f2-8d66-d308d55efd98",
  "TopicArn" : "arn:aws:sns:us-east-1:848283244672:S-Notification-Queue",
  "Message" : "{\"notificationType\":\"Delivery\",\"mail\"}"
}

基本上我需要访问数组的“Message”部分,并且能够像“notificationType = Delivery”一样使用值对。

我尝试使用PHP foreach外观遍历数组,我尝试按如下方式解码数组:

$message_data = json_decode($message,true);
然而,我仍然在努力访问其中的数据。注意:我在变量$ message中有数据。

有关如何访问邮件数据的任何建议吗?

还希望访问Message部分中的部分,如:

{\"name\":\"Subject\",\"value\":\"abc"}

www.singles.dating

三江源

2 个答案:

答案 0 :(得分:2)

原因是Message是序列化的json。

所以它还需要解码

$message_data = json_decode($message, true);
if(
  isset($message_data['Message']) AND !is_array($message_data['Message'])
) {
  $message_data['Message'] = json_decode($message_data['Message'], true);
}

答案 1 :(得分:1)

该JSON的消息部分本身是一个JSON字符串,因此在解码整个JSON对象后,您需要再次解码消息属性。假设JSON位于名为$aws_notification的变量中,您可以这样做:

$message_json = json_decode( $aws_notification, true )[ 'Message' ];
$message_data = json_decode( $message_json, true );

然后使用可以访问$message_data[ 'notificationType' ]及其他属性。