0

デコードする JSON は次のとおりです。

{"somearray":[
    {
     "id":71398,
     "prices":{
         "SIMPLE":270,
         "VIP":300,
         "SOFA":540,
         "EXTRA":320
         }
    },
    {
     "id":71399,
     "prices":{
         "SIMPLE":190,
         "VIP":190,
         "SOFA":380
         }
     },
    {...}
]}

注: 一部のアイテムには「EXTRA」の価格があり、一部のアイテムにはありません。

JSON は、オンラインの JSON バリデーターに従って有効です。ただし、phpでデコードしようとすると

json_decode($json, true);

(true - データを連想配列として取得します。) キー "EXTRA" は json_decode によって無視されます。

したがって、デコードされた結果を var_dump() するか、 $item['prices']['EXTRA'] を試すと、「EXTRA」キー値はありません。

どうして???

4

1 に答える 1

1

json が有効な場合、これは正常に機能します。

<?php
$json = '{"somearray":[
    {
     "id":71398,
     "prices":{
         "SIMPLE":270,
         "VIP":300,
         "SOFA":540,
         "EXTRA":320'. // There was an extra comma here.
         '}
    },
    {
     "id":71399,
     "prices":{
         "SIMPLE":190,
         "VIP":190,
         "SOFA":380
         }
     }
]}';

print_r(json_decode($json));
?>

出力:

[somearray] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 71398
                    [prices] => stdClass Object
                        (
                            [SIMPLE] => 270
                            [VIP] => 300
                            [SOFA] => 540
                            [EXTRA] => 320
                        )

                )

            [1] => stdClass Object
                (
                    [id] => 71399
                    [prices] => stdClass Object
                        (
                            [SIMPLE] => 190
                            [VIP] => 190
                            [SOFA] => 380
                        )

                )

        )
于 2013-07-24T03:58:22.227 に答える