将多维度数组转换为对象(但不转换为stdClass)

时间:2018-03-09 07:48:34

标签: php arrays serialization zend-hydrator

我有一些项目,我从外部API大尺寸数组。这个api在很多方面都返回了JSON。我必须对这些数据进行很多操作,所以我想将这个嵌套数组更改/转换为我的对象类,而不是StdObject。 我长期寻找最佳方式,并尝试两种解决方案:

  1. 我写了将我将维度数组转换为我的Entity对象的hydrator。但是当这个数组中的许多不同类型的数据是水化器代码时不太好。
  2. 另一种方法是循环并序列化每个级别数组以拥有许多Entity类。最终以某种方式合并为一个对象
  3. 下面举例说明了很多维数组:

    $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',
    ];
    

    结局我希望得到一个对象我自己的类与来自这个数组的数据,但我不是所有数据从数组“put”到mam propetris对象只选择了一些。我不会得到对象StdObject。 也许你知道更好的方法,我发现只在第1点和第2点描述。 我将不胜感激任何提示和帮助

1 个答案:

答案 0 :(得分:0)

  1. 您需要将其编码为json
  2. 使用第二个参数解析结果为真

     $object= json_decode(json_encode($arr),true);
    
相关问题