json_decode () возвращает пустые проблемы

У меня есть проблема с моим JSON. Это работает возвраты правильно в PHP 5.3 (таким образом, я не могу использовать json_last_error ()), и это возвращается успешно, когда я копирую строку явно в json_decode (json_decode (' {...} '). Это только возвращает пустой указатель в том, когда я передаю результат как переменную, и я использую php 5.2, который является тем, для чего я нуждаюсь в нем.

Вывод прибывает из JSON, входящего в систему PHPUnit:

[
    {
        "event": "suiteStart",
        "suite": "",
        "tests": 2
    },
    {
        "event": "suiteStart",
        "suite": "TagTestCase",
        "tests": 2
    },
    {
        "event": "test",
        "suite": "TagTestCase",
        "test": "TagTestCase::test_it",
        "status": "fail",
        "time": 0.00248718261719,
        "trace": [
            {
                "file": "\/UnitTest\/PHPUnit.php",
                "line": 98,
                "function": "run",
                "class": "PHPUnit_Framework_TestSuite",
                "type": "->",
                "args": [
                    {

                    }
                ]
            },
            {
                "file": "\/UnitTest\/PHPUnit.php",
                "line": 116,
                "function": "run",
                "class": "PHPUnit",
                "type": "->",
                "args": [

                ]
            },
            {
                "file": "\/UnitTest\/PHPUnit.php",
                "line": 212,
                "function": "__tostring",
                "class": "PHPUnit",
                "type": "->",
                "args": [

                ]
            }
        ],
        "message": "false assertionzzzzz.\nFailed asserting that <boolean:false> is true."
    },
    {
        "event": "test",
        "suite": "TagTestCase",
        "test": "TagTestCase::test_two",
        "status": "pass",
        "time": 0.00182914733887,
        "trace": [

        ],
        "message": ""
    }
]

Править: Это пути, я исследовал - возможно, Вы - лучший проводник.. Три возможных пути, которые могли помочь:

  • Что является особенным в json_decode () в php 5.2 затем 5.3? что они изменяли?
  • Кто-то еще использующий JSON от PHPUnit, и как они анализируют его.
  • Что изменяется, когда у Вас есть он в переменной по сравнению с печатью его для экранирования и копирование его в json_decode ()

Любая справка значительно(!) ценилась бы.

Спасибо! Матовый

11
задан Matt 24 June 2010 в 15:25
поделиться

3 ответа

Что за УЖАСНЫЙ сеанс отладки ... ну, хорошие новости ... Я понял ...

Я начал смотреть на него с помощью AJAX и регистрировать его с помощью Firebug ... и оказалось, что json_decode (или eval по способ) не может обрабатывать ", что PHPUnit отправляет обратно (Давай, Себастьян!), чтобы исправить это:

$json = str_replace('&quot;', '"', $json);

Теперь я подумал, что они такие же ... может быть, кто-то просветит меня ..

20
ответ дан 3 December 2019 в 01:12
поделиться

Когда я использую:

phpunit --log-json file.json <test_file>

(с использованием PHPUnit 3.4.13), создается впечатление, что файл, который он создает, не содержит действительного JSON,

файл json содержит «json», который выглядит примерно так:

{...}{...}{...}{...}

Вместо этого из того, что я ожидал увидеть:

[{...},{...},{...},{...}]

Не уверен, что это та же проблема, которую вы видите, ваш пример вывода JSON в вопросе кажется более достоверным, чем то, что я вижу.

После добавления недостающих запятых и скобок их можно проанализировать с помощью json_decode () в PHP 5.2.10 или PHP 5.3.2.

4
ответ дан 3 December 2019 в 01:12
поделиться

попробуйте установить отчеты об ошибках в ALL, json_decode() должен дать вам уведомление в смещении, где преобразование не удается.

0
ответ дан 3 December 2019 в 01:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: