php - 解析 onesignal API 响应
问题描述
我想使用 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'];
演示:https ://3v4l.org/QKUQN 。
如果 JSON 是一个数组并且您的数据位于该数组的第一个元素内,这[0]
将是有意义的。但是对于一个简单的对象,没有这样的额外层可以遍历。
推荐阅读
- php - PHPExcel如何通过单元格交叉引用值获取值(不是通过列/行引用而是通过值)
- ruby-on-rails - 如何让 Bootstrap Javascript 在 Ruby on Rails 6 中工作
- c# - Datagridview 单元格单击事件错误以获取数据网格到文本框
- kotlin - 将 lambda 的所有参数转发给函数
- python - 安装 jupyter 时出现“AttributeError:_DistInfoDistribution__dep_map”
- elasticsearch - jhipster 中的 JestElasticsearchException
- php - 如何*正确*检查字符串是否具有 PHP 中 UTF-8 的“有效字节序列”?
- javascript - Jquery代码不会在ajax调用上修改html标签的属性
- reactjs - 如何使用 react native render html 在一行中显示文本和图像?
- android - Android Studio 在构建期间每次都会下载 maven 元数据