2016-12-08 6 views
0

I AWSから、次のJSON /アレイを持っていると私はPHPでそれを読むのに苦労しています:PHP - JSON配列 - わからない抽出するためにどのようにデータ

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

は基本的に私は「メッセージ」の部分にアクセスする必要があります同様の "notificationType = Delivery"内で値のペアを使用できるようになりました。

私はPHPのforeachの外観を持つ配列をループしようとしたと私は次のように配列を解読しようとしました:

$message_data = json_decode($message,true); 

しかし、私はまだ内のデータにアクセスするために苦労しています。注:変数$メッセージにデータがあります。

メッセージデータにアクセスする方法についてのアドバイスはありますか?その理由は、Messageがシリアル化JSONであるということである

ありがとう

答えて

1

をデコードする必要があります。 JSONは$aws_notificationという変数にあると仮定すると、あなたはこれを行うことができます。

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

は、その後の使用は$message_data[ 'notificationType' ]とそのほかのプロパティにアクセスすることができます。

2

をwww.singles.dating

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

はまたのようなメッセージセクション内の部品にアクセスすることを望んで。

だから、そのJSONのメッセージセクションは、JSONの文字列そのものであるので、全体の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); 
} 
関連する問題