PHP ::如果json值包含编码数据,如何将json对象转换为数组?

时间:2010-07-23 11:24:33

标签: php json

我正在尝试使用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"}]

PHP代码:

$packs = json_decode(urldecode($_POST["packs"]),true);
print_r($packs);

不幸的是它不打印任何东西。如果我发送空包数据,那么它打印好。非常感谢任何帮助。

感谢你, sureace。

2 个答案:

答案 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"]);