0

我是 PHP 和 JSON 的新手,所以希望有人能帮助我。

我有一个 PHP,第 3 方对其执行 POST 以提供 JSON 数据。发送的数据示例如下:

> {   "created": 1326853478,   "livemode": false,   "id":
> "evt_00000000000000",   "type": "charge.succeeded",   "object":
> "event",   "data": {
>     "object": {
>       "id": "ch_00000000000000",
>       "object": "charge",
>       "created": 1366838716,
>       "livemode": false,
>       "paid": true,
>       "amount": 1000,
>       "currency": "gbp",
>       "refunded": false,
>       "fee": 59,
>       "fee_details": [
>         {
>           "amount": 59,
>           "currency": "usd",
>           "type": "stripe_fee",
>           "description": "Stripe processing fees",
>           "application": null,
>           "amount_refunded": 0
>         }
>       ],
>       "card": {
>         "object": "card",
>         "last4": "4242",
>         "type": "Visa",
>         "exp_month": 2,
>         "exp_year": 2016,
>         "fingerprint": "cniJDyeew54ashW6Iyr",
>         "country": "US",
>         "name": "wibble3",
>         "address_line1": null,
>         "address_line2": null,
>         "address_city": null,
>         "address_state": null,
>         "address_zip": null,
>         "address_country": null,
>         "cvc_check": "pass",
>         "address_line1_check": null,
>         "address_zip_check": null
>       },
>       "captured": true,
>       "failure_message": null,
>       "amount_refunded": 0,
>       "customer": null,
>       "invoice": null,
>       "description": null,
>       "dispute": null
>     }   } }

我希望能够提取某些项目然后根据这些值进行处理。

使用这段代码,我可以很容易地提取“类型”:

$body = @file_get_contents('php://input');
$event_json = json_decode($body);
print $event_json->{'type'};

但是我无法提取“费用”,例如,这似乎是我成功从中提取价值的一个级别,或者“描述”又是另一个级别。

我希望能够从这个 JSON 字符串中只提取某些项目(例如,类型、费用、描述、Last4),但我完全迷失了。我很欣赏这可能是一项相当基本的任务,但我无处可去。

任何帮助,感激不尽!

4

4 回答 4

2

您可以通过以下方式快速实现此目的:

$body = @file_get_contents('php://input');
$event_json = json_decode($body, true);
print $event_json['data']['object']['fee'];
于 2013-04-25T15:26:24.907 回答
2

首先,我建议true作为第二个参数传递给json_decode. 这会产生一个关联数组而不是一个对象,这使它更容易使用。

然后,您可以这样做:

$fee = $event_json['data']['object']['fee'];

您可以根据需要多次链接这些方括号,以深入研究数组。

于 2013-04-25T15:23:21.943 回答
1

你有多层次的对象,所以使用:

echo($event_json->data->object->fee);

基本上,您正在回fee显,它是对象 name 的成员,而 nameobject又是对象的属性, nameddata又是$event_json对象的成员。

于 2013-04-25T15:26:42.263 回答
0

当您执行 json_decode 时,您将获得此数据的数组。因此,您可以像这样访问数据:

$event_json['data']['object']['fee']

祝你好运

于 2013-04-25T15:23:53.347 回答