PHP :: Как преобразовать объект json в массив, если значение json содержит закодированные данные? - PullRequest
0 голосов
/ 23 июля 2010

Я пытаюсь преобразовать данные JSON в массив, используя php. Но, к сожалению, мои данные 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 ]

1 голос
/ 23 июля 2010

Для начала, если это из 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);

Надеюсь, это поможет.

Edit: Снимок экрана, показывающий, что фрагмент кода работает отлично:

альтернативный текст http://www.freeimagehosting.net/uploads/d9b635a0a0.gif

0 голосов
/ 23 июля 2010

Ваш php файл является controller.php?Попробуйте свои команды без urldecode.Декодирование уже завершено, когда вызывается ваш скрипт.

Так что просто json_decode($_POST["yourparameter"]);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...