如何将 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()
失败的原因。
我从第三部分收到的以下输出 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()
失败的原因。