解码从firebase返回json

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解码从firebase返回json相关的知识,希望对你有一定的参考价值。

我想从url->“https://fcm.googleapis.com/fcm/send”解码这个json但不幸的是我没有成功,我真的不知道该怎么办请帮助我,在下面你看到我的代码:

    function decodeJSON($ids)
{
    $MyString = sendFCMToMultiple($ids);
    echo "return:" . $MyString . php_EOL;
    //$MyDecode = json_decode($MyString, false, 512, JSON_BIGINT_AS_STRING);
    //$MyDecode = json_decode($MyString, true, 512, JSON_BIGINT_AS_STRING);
    $MyDecode = json_decode($MyString);
    $MultiCastID = $MyDecode->multicast_id;
    $Success = $MyDecode->success;
    $Failure = $MyDecode->failure;
    $CanonicalIDS = $MyDecode->canonical_ids;
    $Results = $MyDecode->results;
    //echo 'Var MultiCastID=' . var_dump($MultiCastID) . PHP_EOL;
    echo 'MultiCastID to Str=' . number_format($MultiCastID, 0, '.', '') . PHP_EOL;
    echo 'MultiCastID=' . $MultiCastID . PHP_EOL;
    echo 'Success=' . $Success . PHP_EOL;
    echo 'Failure=' . $Failure . PHP_EOL;
    echo 'CanonicalIDS=' . $CanonicalIDS . PHP_EOL;
    echo 'Results=' . $Results . PHP_EOL;

    echo '=================================================================' . PHP_EOL;
}

这是来自fcm url的原始和主要json:

{
  "multicast_id": 7640049088650537742,
  "success": 2,
  "failure": 2,
  "canonical_ids": 0,
  "results": [
    {
      "error": "NotRegistered"
    },
    {
      "error": "NotRegistered"
    },
    {
      "message_id": "0:1513401047065944%93a06d80f9fd7ecd"
    },
    {
      "message_id": "0:1513401047066546%93a06d80f9fd7ecd"
    }
  ]
}

这是返回并从我的代码中显示:

{"multicast_id":7640049088650537742,"success":2,"failure":2,"canonical_ids":0,"results":[{"error":"NotRegistered"},{"error":"NotRegistered"},{"message_id":"0:1513401047065944%93a06d80f9fd7ecd"},{"message_id":"0:1513401047066546%93a06d80f9fd7ecd"}]}
MultiCastID to Str=7640049088650537984
MultiCastID=7.6400490886505E+18
Success=2
Failure=2
CanonicalIDS=0
Results=
=================================================================

但我的问题是:

第一:我不能将json字符串用于json_decode($ MyString,false,512,JSON_BIGINT_AS_STRING)并返回所有键的空值;这就是为什么我说我想要为multicast_id键的字符串值或整数类型,但json_decode本身自动大整数浮点数我不喜欢它我想要整数和或字符串值,虽然我使用第5和第6行,因为评论在代码中,但不是真的。第二:对我来说这是非常重要的结果键阵,因为我明白谁没有收到,谁收到了,为什么?谢谢。

答案

只有你的第二点的部分答案,访问json中的结果(在php 5.6中测试):

foreach ($MyDecode->results as $result) {
    if (isset($result->error)) {
        echo 'Found error: ' . $result->error . PHP_EOL;
    } elseif (isset($result->message_id)) {
        echo 'Found message id: ' . $result->message_id . PHP_EOL;
    }
}

输出:

Found error: NotRegistered
Found error: NotRegistered
Found message id: 0:1513401047065944%93a06d80f9fd7ecd
Found message id: 0:1513401047066546%93a06d80f9fd7ecd

以上是关于解码从firebase返回json的主要内容,如果未能解决你的问题,请参考以下文章

Dart:从 Firebase 快照中解码 Json

json 可视代码工作室Angular with Firebase片段

使用 PHP、curl 解码从 Flickr API 返回的 json 字符串

片段视图返回后执行的 Firebase 查询

如何在 Firebase 实时数据库中解码这个 json?

如何从 Firebase 获取数据到 Recyclerview 中的片段?