json_decode - искаженный JSON из запроса AJAX - PullRequest
2 голосов
/ 03 октября 2011

Я создаю запрос во Flash, который содержит JSON-кодированный массив объектов.Это кодируется с использованием as3corelib.Затем запрос передается в JavaScript через ExternalInterface, и ajax-вызов jquery отправляет запрос на сервер.

В PHP входящие данные анализируются, но json_decode возвращает значение null, что приводит к ошибке JSON.var_dump приводит к комментариям:

<?php
    (isset($_POST['gdata']) && !empty($_POST['gdata'])) ? $gamedata = $_POST['gdata'] : returnError("game data not specified");
    var_dump($gamedata);                             // (String) = string(37) "[{\"duration\":1,\"id\":\"game2\"}]"
    $gamedata = json_decode(utf8_encode(trim($gamedata)),true);
    var_dump($gamedata);                             // null
    $gamedata = json_decode("[{\"duration\":1,\"id\":\"game2\"}]",true);
    var_dump($gamedata);
    /*
    array(1) {
      [0]=>
      object(stdClass)#1 (2) {
        ["duration"]=>
        int(1)
        ["id"]=>
        string(7) "game2"
      }
    }
    */
?>

Чего я не понимаю, так это того, что попытка декодировать переменную возвращает ноль, но тот же текст, декодированный из литеральной строки, работает нормально.Что я могу сделать, чтобы очистить входящие данные и сделать их читаемыми для json_decode?

Редактировать: php_info() говорит, что magic_quotes_gpc включен.Может ли это быть проблемой?

1 Ответ

3 голосов
/ 03 октября 2011

magic_quotes_gpc может быть проблемой, да.И если вы перекодируете вслепую, зная, что кодировка также может быть проблемой.

Так что, если вы знаете, что magic_quotes_gpc включен, вам нужно сначала убрать косую черту.кодировку, позаботьтесь, чтобы вы знали, в какую кодировку закодированы входящие данные, а не то, что они уже utf-8 закодированы, и вы предполагаете, что это latin-1, и конвертируете их снова.

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