我正在尝试使用php将json数据转换为数组。但遗憾的是我的json数据包含编码值。因为这个原因我无法将这个json对象转换为php中的数组。我尝试了不同的方式,但我无法得到任何解决方案来解决这个问题。
这是我从客户端获取的URL数据。
controller.php?type=assignPacksToServer&sid=54&skey=j59fsWqaBw!Gh!KoTbhC&svid=268&packs=[{"packid":"22","pverid":"18","yaml":"-%20url%3A%20%2Fstatic%0A%20%20static_dir%3A%20static%0A%0A-%20url%3A%20.*%0A%20%20script%3A%20provider.py"},{"packid":"23","pverid":"19","yaml":"-%20url%3A%20%2Fstatic%0A%20%20static_dir%3A%20static%0A%0A-%20url%3A%20.*%0A%20%20script%3A%20provider.py"}]
$packs = json_decode(urldecode($_POST["packs"]),true);
print_r($packs);
不幸的是它不打印任何东西。如果我发送空包数据,那么它打印好。非常感谢任何帮助。
感谢你, sureace。
答案 0 :(得分:1)
首先,如果是来自URL,那么它是GET,而不是POST。另外,你需要反过来做这件事:
$packs = json_decode($_GET["packs"],true);
foreach($packs as $n => $value)
if (isset($value['yaml']))
$packs[$n]['yaml'] = urldecode($value['yaml']);
print_r($packs);
希望有所帮助。
编辑: 屏幕截图显示代码片段完美运行:
alt text http://www.freeimagehosting.net/uploads/d9b635a0a0.gif
答案 1 :(得分:0)
你的php文件是controller.php吗?尝试不使用urldecode
的命令。调用脚本时已完成解码。
所以只是json_decode($_POST["yourparameter"]);