如何将 JSONP 数据转换为 PHP 数组

How to Convert JSONP data to PHP Array

我从第三部分收到的以下输出 JSONP API。

processResponse({
    "website": {
        "name": "example.it/",
        "malwareListStatus": "listed",
        "partialMalwareHosts": [],
        "uwsListStatus": "unlisted",
        "partialUwsHosts": [],
        "socialListStatus": "unlisted",
        "partialSocialEngHosts": [],
        "malwareDownloadListStatus": "unlisted",
        "partialMalwareDowHosts": [],
        "uwsDownloadListStatus": "unlisted",
        "partialUwsDowHosts": [],
        "unknownDownloadListStatus": "unlisted",
        "partialUnknownDowHosts": [],
        "numAses": 1,
        "numListedTimes": 1,
        "asList": ["AS28716 (RETELIT-AS)"],
        "malwareSite": {
            "type": 6,
            "sendsToAttackSites": [],
            "sendsToIntermediarySites": [],
            "receivesTrafficFrom": ["tes.com/", "test.com/", "test.fr/"]
        }
    },
    "as": {},
    "dataUpdatedDate": 1462333750,
    "lastVisitDate": 1462321226,
    "lastMaliciousDate": 1462321226,
    "numTested": 14484
});

我正在尝试使用 json_decode($ApiOutput); 转换为 PHP 数组。但是,它不起作用。你有什么指示吗?

json_decode() 是正确的方法。

它对我有用:

$json = '{
    "website": {
        "name": "example.it/",
        "malwareListStatus": "listed",
        "partialMalwareHosts": [],
        "uwsListStatus": "unlisted",
        "partialUwsHosts": [],
        "socialListStatus": "unlisted",
        "partialSocialEngHosts": [],
        "malwareDownloadListStatus": "unlisted",
        "partialMalwareDowHosts": [],
        "uwsDownloadListStatus": "unlisted",
        "partialUwsDowHosts": [],
        "unknownDownloadListStatus": "unlisted",
        "partialUnknownDowHosts": [],
        "numAses": 1,
        "numListedTimes": 1,
        "asList": ["AS28716 (RETELIT-AS)"],
        "malwareSite": {
            "type": 6,
            "sendsToAttackSites": [],
            "sendsToIntermediarySites": [],
            "receivesTrafficFrom": ["tes.com/", "test.com/", "test.fr/"]
        }
    },
    "as": {},
    "dataUpdatedDate": 1462333750,
    "lastVisitDate": 1462321226,
    "lastMaliciousDate": 1462321226,
    "numTested": 14484
}';
$arr = json_decode($json);
echo '<pre>';print_r($arr);echo '</pre>';

输出:

stdClass Object
(
    [website] => stdClass Object
        (
            [name] => example.it/
            [malwareListStatus] => listed
            [partialMalwareHosts] => Array
                (
                )

            [uwsListStatus] => unlisted
            [partialUwsHosts] => Array
                (
                )

            [socialListStatus] => unlisted
            [partialSocialEngHosts] => Array
                (
                )

            [malwareDownloadListStatus] => unlisted
            [partialMalwareDowHosts] => Array
                (
                )

            [uwsDownloadListStatus] => unlisted
            [partialUwsDowHosts] => Array
                (
                )

            [unknownDownloadListStatus] => unlisted
            [partialUnknownDowHosts] => Array
                (
                )

            [numAses] => 1
            [numListedTimes] => 1
            [asList] => Array
                (
                    [0] => AS28716 (RETELIT-AS)
                )

            [malwareSite] => stdClass Object
                (
                    [type] => 6
                    [sendsToAttackSites] => Array
                        (
                        )

                    [sendsToIntermediarySites] => Array
                        (
                        )

                    [receivesTrafficFrom] => Array
                        (
                            [0] => tes.com/
                            [1] => test.com/
                            [2] => test.fr/
                        )

                )

        )

    [as] => stdClass Object
        (
        )

    [dataUpdatedDate] => 1462333750
    [lastVisitDate] => 1462321226
    [lastMaliciousDate] => 1462321226
    [numTested] => 14484
)

最快的方法是只做一个简单的 str_replace() 来删除响应中的函数名称和最后一个花括号。否则你不会得到有效的 JSON,这就是你的 json_decode() 失败的原因。