将json_decode转换为对象

时间:2016-09-23 17:58:56

标签: php arrays json object stdclass

我使用json_decode

获得以下输出
Array
(
    [0] => Array
        (
            [...] => ...
            [...] => ...
        )

    [1] => Array
        (
            [...] => ...
            [...] => ...
        )

我想要做的是将它导入一个类,以便我可以从内存中调用和引用数据。

从研究中我发现了这个: How to convert an array into an object using stdClass()

但是,我不确定stdClass是否是我想要的方式?

2 个答案:

答案 0 :(得分:2)

PHP manual的功能定义:

reshape

考虑您的JSON字符串mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] ) ,您必须使用[{"first_name":"Jason","last_name":"Pass", [...]并将其第二个参数设置为TRUE。

这意味着来自JSON字符串的对象将作为关联数组返回。如果省略第二个参数(或使用默认的FALSE值),您将得到:

json_decode

这意味着JSON字符串中的对象将保留为对象。

但是,包含对象的数组仍将是一个数组,因为它应该是这样的,你不应该强迫它成为一个对象。没有充分的理由这样做。

答案 1 :(得分:1)

在启动数组之前放置对象

use Doctrine\Bundle\DoctrineBundle\ConnectionFactory;    
use Doctrine\Common\EventManager;
use Doctrine\DBAL\Configuration;
use Symfony\Component\HttpFoundation\RequestStack;

class DynamicConnectionFactory extends Factory 
{
   /** @var RequestStack */
   private $requestStack;

   public function __construct(array $types, RequestStack $stack)
   {
       parent::__construct($types);
       $this->requestStack = $stack;
   }

   public function createConnection(array $params, Configuration $config = null, EventManager $eventManager = null, array $mappingTypes = array())
   {
       $host = $this->requestStack->getMasterRequest()->getHost();
       $params = $this->replaceParamsForHost(array $params, $host);
       return parent::createConnection($params, $config, $eventManager, $mappingTypes);
   }

   private function replaceParamsForHost(array $params, $host)
   {
       //do your magic, i.e parse config or call Memcache service or count the stars
       return array_replace($params, ['database' => $host]);
   }
}