解析 onessignal API 响应

问题描述 投票:0回答:1

我想用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");

我想只打印某些参数,以便做进一步处理。但是我无法解析响应。

php onesignal
1个回答
1
投票

你的JSON是一个对象,而不是一个数组,所以(一旦你对它进行了解码)你可以直接访问它的属性。只要去掉 [0] 就没有问题了。

echo "checking---".$yummy['app_id'];

演示。https:/3v4l.orgQKUQN。.

[0] 如果JSON是一个数组,并且你的数据在这个数组的第一个元素里面,那么这个方法就有意义了。但是对于一个简单的对象来说,没有额外的层级这样的东西可以穿越。

© www.soinside.com 2019 - 2024. All rights reserved.