我已经阅读了十几个关于该主题的堆栈文章,并且给出了我解码的JSON字符串,这些文章都不起作用。这是我的JSON:
{
"id":"cus_EfVGU7XtvtKUx2",
"account_balance":0,
"cards":{
"count":1,
"data":[
{
"id":"card_1ECAFn2H1YALOWTjH0zGfOS7",
"exp_month":11,
"exp_year":2019,
"last4":"1111",
"metadata":[
],
"name":"ned land",
"type":"Visa"
}
]
},
"invoice_prefix":"5F8A134",
"has_more":false,
"total_count":1,
"url":"\/v1\/customers\/cus_EfVGU7XtvtKUx2\/sources"
}
然后我将该字符串编码为一个对象:
$obj = json_decode($json, false);
通过执行以下操作,我可以轻松获取最上面的id值:
$obj->id
但是当我尝试获取exp_month
值时,我返回了一个空字符串:
$expMonth = $obj->cards->data->exp_month;
然后我尝试使用数组语法:
$obj = json_decode($json, true);
$expMonth = $obj["cards"]["data"]["exp_month"];
然后$expMonth
再次解析为空字符串。我在做什么错了?
答案 0 :(得分:2)
使用$expMonth = $obj->cards->data[0]->exp_month;
。 $data
是一个数组。
完整示例:
$obj = json_decode('{
"id":"cus_EfVGU7XtvtKUx2",
"account_balance":0,
"cards":{
"count":1,
"data":[
{
"id":"card_1ECAFn2H1YALOWTjH0zGfOS7",
"exp_month":11,
"exp_year":2019,
"last4":"1111",
"metadata":[
],
"name":"ned land",
"type":"Visa"
}
]
},
"invoice_prefix":"5F8A134",
"has_more":false,
"total_count":1,
"url":"\/v1\/customers\/cus_EfVGU7XtvtKUx2\/sources"
}');
print_r($obj->cards->data[0]->exp_month);
输出为11
。
答案 1 :(得分:1)
数据是对象数组。
$obj->cards->data[0]->exp_month
应该做的事