Преобразовать массив многих измерений в объект (но не в stdClass)

У меня есть проект, в котором я получаю из внешнего массива больших размеров API. Этот API-интерфейс возвращает JSON во многих измерениях. Я должен сделать много операций с этими данными, поэтому я хочу изменить / преобразовать этот вложенный массив в мой объектный класс, а не StdObject. Я долго искал лучший способ для этого и пробую два решения:

  1. Я пишу гидратор, который конвертирует мне массив измерений в мой объект Entity. Но когда много данных разных типов в этом массиве, код гидратора не так хорош.
  2. Другим способом является некоторый цикл и сериализация каждого массива уровней для владения множеством классов Entity. И окончательно как-то сливаются в один объект

Ниже приведен пример многомерного массива:

$arr = [
    'geometry' =>
        [
            'location' => ['lat' => 54.352095, 'lng' => 18.650461],
            'viewport' => ['northeast' => ['lat' => 54.35213084999999, 'lng' => 18.65059885], 'southwest' => ['lat' => 54.35206664999999, 'lng' => 18.65041305],],
        ],
    'icon' => 'https://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png',
    'id' => '2a293ddb8ddfdc1d65274d12c8465e50a3fe68ef',
    'name' => 'Cafe Szafa',
    'opening_hours' => [
        'open_now' => false, 
        'weekday_text' => [
            'text1',
            'text2',
        ]
    ],
    'photos' => [
        'number' => 6,
        'quality' => 90
    ],
    'place_id' => 'ChIJkaVEf3Vz_UYRQdJXi93rMuo',
    'rating' => 4.2,
    'reference' => 'CmRSAAAAUh4a5IzCSVbJTewsfTI0t-rBLC-SwY417eXejcn9GN4el36oLMCSlPKukX6BCiQRV8SU1WmtptK5vx3VsLYZSVxmYmG0eyz87tQk9qO7fPgGcuThczRu4-g4KVSCWDUeEhBxTHb4lNKjk9_qveBXVh1NGhSLW4uY08XRCJFv8ivPK1j-EP8hnw',
    'scope' => 'GOOGLE',
    'types' => ['bar', 'point_of_interest', 'establishment'],
    'vicinity' => 'Podmurze 2, Gdańsk',
];

В заключение я хочу получить один объект моего собственного класса с данными из этого массива, но я не все данные из массива "помещаю" в объект propetris, только некоторые, выбранные. И я не хочу получать объект StdObject. Может быть, вы знаете лучший способ, чтобы я нашел только описание в пунктах 1 и 2. Буду благодарен за любые советы и помощь

1 ответ

  1. вам нужно закодировать его как JSON
  2. декодировать результат со вторыми параметрами в true

     $object= json_decode(json_encode($arr),true);
    
Другие вопросы по тегам