我想用PHP解析来自onesignal API的响应。以下是API响应的结构。我想只打印某些参数。我怎样才能做到这一点?
{
"adm_big_picture": "",
"adm_group": "",
"adm_group_message": {
"en": ""
},
"adm_large_icon": "",
"adm_small_icon": "",
"adm_sound": "",
"spoken_text": {},
"alexa_ssml": null,
"alexa_display_title": null,
"amazon_background_data": false,
"android_accent_color": "FF9900FF",
"android_group": "group key",
"android_group_message": {
"en": "group message for Android 6.0 and older"
},
"android_led_color": null,
"android_sound": null,
"android_visibility": 1,
"app_id": "3beb3078-e0f1-4629-af17-fde833b9f716",
"big_picture": "https://img.onesignal.com/n/37326fcc-2baa-45da-891c-ca9454a64957.png",
"buttons": null,
"canceled": false,
"chrome_big_picture": "",
"chrome_icon": "",
"chrome_web_icon": "https://picture-resource.com/icon-image.png",
"chrome_web_image": "https://picture-resource.com/image.png",
"chrome_web_badge": "https://picture-resource.com/badge.png",
"content_available": false,
"contents": {
"en": "English Message"
},
"converted": 1,
"data": {
"additional": "data",
"campaign": "25"
},
"delayed_option": "immediate",
"delivery_time_of_day": "2:32PM",
"errored": 4,
"excluded_segments": [],
"failed": 0,
"firefox_icon": "https://picture-resource.com/firefox_icon.png",
"global_image": "https://link-to-your-image.com/image-resource-file.png",
"headings": {
"en": "English Message Title 😊"
},
"id": "fd1723c6-bfaf-4f53-b4f4-0408ff43e18a",
"include_player_ids": null,
"include_external_user_ids": null,
"included_segments": [
"Subscribed Users"
],
"thread_id": null,
"ios_badgeCount": 1,
"ios_badgeType": "Increase",
"ios_category": "",
"ios_sound": "explosion.wav",
"apns_alert": {},
"isAdm": false,
"isAndroid": true,
"isChrome": false,
"isChromeWeb": true,
"isAlexa": false,
"isFirefox": true,
"isIos": true,
"isSafari": true,
"isWP": false,
"isWP_WNS": false,
"isEdge": true,
"large_icon": "https://img.onesignal.com/n/b5cadcf0-1297-4489-b865-545b421d8c5d.png",
"priority": 5,
"queued_at": 1580510246,
"remaining": 0,
"send_after": 1580510246,
"completed_at": 1580510247,
"small_icon": "small_icon",
"successful": 232,
"received": 5,
"tags": null,
"filters": null,
"template_id": null,
"ttl": 777,
"url": "https://onesignal.com/blog",
"web_url": null,
"app_url": null,
"web_buttons": null,
"web_push_topic": null,
"wp_sound": "",
"wp_wns_sound": "",
"platform_delivery_stats": {
"edge_web_push": {
"successful": 2,
"failed": 0,
"errored": 0
},
"chrome_web_push": {
"successful": 26,
"failed": 0,
"errored": 0
},
"firefox_web_push": {
"successful": 1,
"failed": 0,
"errored": 0
},
"android": {
"successful": 198,
"errored": 1,
"failed": 0
},
"safari_web_push": {
"successful": 3,
"failed": 0,
"errored": 0
},
"ios": {
"successful": 2,
"errored": 3,
"failed": 0
}
},
"ios_attachments": {
"id": "https://img.onesignal.com/n/23f60ba6-8f2e-4ce1-bdf5-86e6286c2e39.png"
}
}
我使用了他们给出的PHP代码,但是没有成功。
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://onesignal.com/api/v1/notifications/c3971bca-b49f- 47c8-b9a0-ace613a06431?app_id=MYAPPID");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json',
'Authorization: Basic AUTHKEY'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
$response = curl_exec($ch);
curl_close($ch);
$return["allresponses"] = $response;
$return = json_encode( $return);
print("\n\nJSON received:\n");
$yummy = json_decode($return, true);
print_r($yummy);
echo("<br>");
echo "checking---".$yummy[0]['app_id']; // I donnot know to to access this
print("\n");
我想只打印某些参数,以便做进一步处理。但是我无法解析响应。
你的JSON是一个对象,而不是一个数组,所以(一旦你对它进行了解码)你可以直接访问它的属性。只要去掉 [0]
就没有问题了。
echo "checking---".$yummy['app_id'];
该 [0]
如果JSON是一个数组,并且你的数据在这个数组的第一个元素里面,那么这个方法就有意义了。但是对于一个简单的对象来说,没有额外的层级这样的东西可以穿越。