2016-10-31 24 views
-3

私は以下のコード化されていないJSON配列を持っています。 コンテキスト内の「型」にアクセスする必要があります。また、ペイロード内の各値をループする必要があります。それ、どうやったら出来るの? PHP JSON配列によるデコードとループ

{ 
    "RequestHeader": 
     { 
        "mess": "am putting it on my wall....", 
        "created_time": "2010-08-24T09:01:25+0000" 
        }, 
    "context" : 

         { 
          "type": "friends,circles" 

         } 

    "payload" [ {12345},{12345} ,{2345} ] 

    } 

は、私は、次の試してみましたが、あなたがjson_decodeメソッドを使用する場合、出力は配列 をネストされます

$decoded = json_decode($json_string); 

for ($i=0;$i<payload.length;++$i) 

{ 

$id=$decoded->payload[$i]; 
//do some operation with the id 

} 
+0

エラー報告を有効にします。それはPHPではありません。 – PeeHaa

+1

これは無効です。サーバースクリプトに進む前に、有効なJSON –

+0

[この回答](http://stackoverflow.com/a/12970107/6213452)を参考にしてください。 –

答えて

-1

を例は、コンテキストタイプにアクセスするので、あなたがする必要が動作しません。

echo $decoded["context"]["type"]; 

とペイロードのループへ

次次

を行う必要があります
+0

upvoteでどのように終わったのかよく分かりませんが、これはいくつかのレベルでは間違っています。 – PeeHaa

0

最初に指定したJSONは無効です。あなたはJSONプロバイダとの問題、あなたがチェックし確認するために、データ

<?php 

$json = <<<'JSON' 
{ 
    "RequestHeader": { 
     "mess": "am putting it on my wall....", 
     "created_time": "2010-08-24T09:01:25+0000" 
    }, 
    "context": { 
     "type": "friends,circles" 
    }, 
    "payload": [ 
     12345, 
     12345, 
     2345 
    ] 
} 
JSON; 

$data = json_decode($json, true); 

$type = $data['context']['type']; 
var_dump($type); 
foreach($data['payload'] as $id) { 
    var_dump($id); 
} 

覚えておいてください

にアクセスすることは非常に簡単になりますが、固定した後、おそらく有効なものは、この

{ 
    "RequestHeader": { 
     "mess": "am putting it on my wall....", 
     "created_time": "2010-08-24T09:01:25+0000" 
    }, 
    "context": { 
     "type": "friends,circles" 
    }, 
    "payload": [ 
     12345, 
     12345, 
     2345 
    ] 
} 

のようになります。実際のデータそのそれにアクセスする前に存在する、例えばisset($data['context']['type'])あなたが完全に完全であると確信している場合を除きます。