Извлечь вложенные данные JSON, используя foreach l oop in php - PullRequest
0 голосов
/ 14 февраля 2020

Я хочу получить данные из нижеуказанного формата JSON, используя PHP (foreach l oop).

Данные пользователя - это соответствие деталям дома и подробности дома отдельным показаниям счетчика.

Я хочу показать Имя пользователя, Device_No и все поле meter_detail. Пожалуйста, помогите мне.

{
    "id": 7,
    "Username": "user",
    "Housename": "Leela",
    "Houses_list": [{
            "id": 1,
            "Device_No": 1111,
            "meter_detail": [{
                    "id": 1,
                    "flow": 12,
                    "date": "2020-02-13T12:05:14.709Z",
                    "opening": 5,
                    "volume": 1234
                },
                {
                    "id": 2,
                    "flow": 32,
                    "date": "2020-02-13T12:05:26.821Z",
                    "opening": 2,
                    "volume": 1235
                }
            ]
        },
        {
            "id": 2,
            "Device_No": 231,
            "meter_detail": [{
                "id": 3,
                "flow": 78,
                "date": "2020-02-13T12:05:41.331Z",
                "opening": 5,
                "volume": 7854
            }]
        }
    ]
}

Ответы [ 3 ]

1 голос
/ 14 февраля 2020

Вам необходимо преобразовать JSON в массив с помощью json_decode(). Тогда вам подойдет пара foreach циклов:

<?php
    $json = '{
        "id": 7,
        "Username": "user",
        "Housename": "Leela",
        "Houses_list": [{
                "id": 1,
                "Device_No": 1111,
                "meter_detail": [{
                        "id": 1,
                        "flow": 12,
                        "date": "2020-02-13T12:05:14.709Z",
                        "opening": 5,
                        "volume": 1234
                    },
                    {
                        "id": 2,
                        "flow": 32,
                        "date": "2020-02-13T12:05:26.821Z",
                        "opening": 2,
                        "volume": 1235
                    }
                ]
            },
            {
                "id": 2,
                "Device_No": 231,
                "meter_detail": [{
                    "id": 3,
                    "flow": 78,
                    "date": "2020-02-13T12:05:41.331Z",
                    "opening": 5,
                    "volume": 7854
                }]
            }
        ]
    }';

    $input = json_decode($json, true);

    echo 'Username: '.$input['Username'].'<br>';
    foreach ($input['Houses_list'] as $device){
        echo '<br>Device No: '.$device['Device_No'].'<br>';
        foreach ($device['meter_detail'] as $metrics){
            echo '<table style="border: 1px solid black">';
            foreach ($metrics as $key => $metric){
                echo '<tr><td>'.$key.'</td><td>'.$metric.'</td></tr>';
            }
            echo '</table>';
        }
    } 
?>

Вывод:

enter image description here

0 голосов
/ 14 февраля 2020

Добро пожаловать в переполнение стека!

Вы можете использовать функцию json_decode , которая преобразует json в массив. Затем вы можете просто перебрать этот массив с foreach l oop.

0 голосов
/ 14 февраля 2020

используйте функцию json_decode (), например:

<?php
$jsonobj = '{"Peter":35,"Ben":37,"Joe":43}';

print_r(json_decode($jsonobj, True));
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...