Как распарсить json в php?

В json приходят два типа данных, такие:

"urls": {
        "0": "12.01.2021 16:16:19",
        "2": "12.01.2021 16:16:38",
        },

И такие:

"urls": [
        "12.01.2021 09:20:34"
    ],

Пытаюсь записать их в бд вот так: bindParam(22, $row['urls'][0]); Но записывается только такой вид, как снизу. Как записывать оба вида?


Ответы (1 шт):

Автор решения: Darth KYL

Чтоб распарить json в php нужно использовать функцию json_decode( $json, true ). Второй параметр отвечает за вид json обьектов, когда параметр установлен в true данные будут возвращены ассоциативным массивом, когда параметр false json обьекты будут возвращены как объекты php https://www.php.net/manual/ru/function.json-decode.php

$json_example_1 = json_decode('{"urls":{"0":"12.01.2021 16:16:19","2":"12.01.2021 16:16:38"}}', true );

на выходе у вас получится массив такого вида в первом случае

Array
(
    [urls] => Array
        (
            [0] => 12.01.2021 16:16:19
            [2] => 12.01.2021 16:16:38
        )

)

$json_example_2 = json_decode('{"urls":["12.01.2021 09:20:34"]}', true );

и массив такого вида во втором случае

Array
(
    [urls] => Array
        (
            [0] => 12.01.2021 09:20:34
        )

)
→ Ссылка