-1

次のような JSON データがあります。

{
    "TABLE": [{
        "ROW": [{
            "COL": [{
                "DATA": "Buff momo"
            }, {
                "DATA": "60.00"
            }, {
                "DATA": "1;#"
            }, {
                "DATA": "0"
            }, {
                "DATA": "1"
            }, {
                "DATA": "1"
            }, {
                "DATA": "118"
            }, {
                "DATA": "1;#{5D73B50D-2FFC-4D16-881E-D49328447AAB}"
            }, {
                "DATA": "1;#0"
            }, {
                "DATA": "2010-06-21 15:43:53"
            }, {
                "DATA": "Miscellaneous"
            }, {
                "DATA": "1;#Home/Lists/Canteen Menu/1_.000"
            }]
        }, {
            "COL": [{
                "DATA": "Chicken drumstick"
            }, {
                "DATA": "100.00"
            }, {
                "DATA": "3;#"
            }, {
                "DATA": "0"
            }, {
                "DATA": "1"
            }, {
                "DATA": "3"
            }, {
                "DATA": "40"
            }, {
                "DATA": "3;#{A1E0F087-57D3-4039-991B-E08B1CB3892A}"
            }, {
                "DATA": "3;#0"
            }, {
                "DATA": "2010-06-21 15:44:14"
            }, {
                "DATA": "Chinese"
            }, {
                "DATA": "3;#Home/Lists/Canteen Menu/3_.000"
            }]
        }
        }]
    }]
}]
}
""

次のようにデコードしようとしました。

header('Content-Type: application/json');
$json_string = utf8_encode(file_get_contents("filename"));
$parsed_json = json_decode($json_string, true);
foreach ($parsed_json as $key => $value) {
}

しかし、役に立たない。foreach() に無効な引数が指定されているため、エラーが発生します。私はどこで間違っていますか?

4

2 に答える 2

1

JSON が無効です。そこに属さないブラケットがいくつかあります。正しいJSONは

{ "TABLE":[{ "ROW":[ { "COL":[ {"DATA":"Buff momo"},{"DATA":"60.00"},{"DATA":"1;#"},{"DATA":"0"},{"DATA":"1"},{"DATA":"1"},{"DATA":"118"},{"DATA":"1;#{5D73B50D-2FFC-4D16-881E-D49328447AAB}"},{"DATA":"1;#0"},{"DATA":"2010-06-21 15:43:53"},{"DATA":"Miscellaneous"},{"DATA":"1;#Home/Lists/Canteen Menu/1_.000"}]}, { "COL":[ {"DATA":"Chicken drumstick"},{"DATA":"100.00"},{"DATA":"3;#"},{"DATA":"0"},{"DATA":"1"},{"DATA":"3"},{"DATA":"40"},{"DATA":"3;#{A1E0F087-57D3-4039-991B-E08B1CB3892A}"},{"DATA":"3;#0"},{"DATA":"2010-06-21 15:44:14"},{"DATA":"Chinese"},{"DATA":"3;#Home/Lists/Canteen Menu/3_.000"}]}]} ]}

JSON はhttp://json.parser.online.fr/でテストできます。

于 2013-07-28T10:58:21.813 に答える
0

関数を使っjson_decodeてjsonをデコードする

*更新: 各 COL をリストとして表示する例

<?php
$json_string = '{ "TABLE":[{ "ROW":[ { "COL":[ {"DATA":"Buff momo"},{"DATA":"60.00"},{"DATA":"1;#"},{"DATA":"0"},{"DATA":"1"},{"DATA":"1"},{"DATA":"118"},{"DATA":"1;#{5D73B50D-2FFC-4D16-881E-D49328447AAB}"},{"DATA":"1;#0"},{"DATA":"2010-06-21 15:43:53"},{"DATA":"Miscellaneous"},{"DATA":"1;#Home/Lists/Canteen Menu/1_.000"}]}, { "COL":[ {"DATA":"Chicken drumstick"},{"DATA":"100.00"},{"DATA":"3;#"},{"DATA":"0"},{"DATA":"1"},{"DATA":"3"},{"DATA":"40"},{"DATA":"3;#{A1E0F087-57D3-4039-991B-E08B1CB3892A}"},{"DATA":"3;#0"},{"DATA":"2010-06-21 15:44:14"},{"DATA":"Chinese"},{"DATA":"3;#Home/Lists/Canteen Menu/3_.000"}]}]} ]}';
$parsed_json = json_decode($json_string);
foreach ($parsed_json->TABLE[0]->ROW as $key => $value) {
    echo 'SELECT ' . $key . ': <select name="select' . $key . '">';
    foreach ($value->COL as $col) {
        echo '<option value="' . $col->DATA . '">' . $col->DATA . '</option>';
    }
    echo '</select>';
}
?>
于 2013-07-28T10:52:24.230 に答える