无法创建JSON响应

时间:2016-01-19 19:16:30

标签: php arrays json

我正在尝试测试模块,我需要重建json,如下所示:

$billing_info['billing']['source']->exp_year

我尝试按以下方式重新创建它:

$arr = json_encode(['exp_month' => 07, 'funding' => 'credit', 'brand' => 'Visa', 'last4' => '4242']);

$billing_info =  [ 'billing' => [ 'source' => $arr ]  ];

但我无法拨打dd($billing_info['billing']['source']->exp_year);

2 个答案:

答案 0 :(得分:1)

在再次访问对象变量之前,必须解码json字符串:

dd(json_decode($billing_info['billing']['source'])->exp_month);

如果您确实需要按照描述创建对象,则可以执行以下操作:

$arr = json_encode(['exp_month' => 07, 'funding' => 'credit', 'brand' => 'Visa', 'last4' => '4242']);
$billing_info =  [ 'billing' => [ 'source' => json_decode($arr) ]  ];

而且你可以打电话给你

dd($billing_info['billing']['source']->exp_month);

方法。在你描述的例子中,无论如何都不需要对json进行编码/解码,但我假设你从其他地方收到你的json字符串。

答案 1 :(得分:0)

json_encode创建一个字符串,而不是一个对象,因此您无法访问它的属性。您必须先致电json_decode

dd(json_decode($billing_info['billing']['source'])->exp_year);

另请参阅http://jsfiddle.net/DBpJe/7722/json_encode文档。

您也可以将数组转换为对象,如:

$arr = (object) array('exp_month' => 07, 'funding' => 'credit', 'brand' => 'Visa', 'last4' => '4242');

然后您可以访问其属性:

var_dump($arr->exp_month);