2015-09-01 2 views
3

Это фрагмент кода в моей функции JSON парсер, который работает хорошо с около десятка или около различных JSON файлов:json_decode возвращение NULL с действительными данными JSON

печатает там для текущих целей отладки

$this->response = stripslashes($this->response); 
    print_r($this->response); 
    $this->response = json_decode($this->response); 
    print_r($this->response); 

Первая печать дает мне строку JSON, а вторая печать дает мне значение null. Использование json_last_error Мне удалось выяснить, что PHP отказывается разбирать JSON, как это было в недопустимом синтаксисе.

Это пропущен в JSON Я разбор (full thing here), он проверяет с каждым валидатор я могу найти на Google:

{ 
"success": 1, 
"stores": [ 
    { 
     "name": "Winton", 
     "address": "370-374 , Wimborne Road, Bournemouth, Dorset BH92HE", 
     "telephone": "", 
     "email": "[email protected]", 
     "website": "", 
     "description": "Mon - 09.00-18.00 Tue - 09.00-18.00 Wed - 09.00-18.00 Thu - 09.00-18.00 Fri - 09.00-18.00 Sat - 09.00-18.00 Sun - 10.00-16.00", 
     "lat": "50.7413", 
     "lng": "-1.87926", 
     "titlewebsite": "Website", 
     "titleemail": "Email", 
     "titletel": "Telephone", 
     "titlecontactstore": "Contact this store", 
     "titlekm": "km", 
     "titlemiles": "miles", 
     "cat_name": "", 
     "cat_img": "", 
     "img": "" 
    }, 
    { 
     "name": "Boscombe", 
     "address": "The Sovereign Centre, Boscombe, Bournemouth, Dorset BH14SX", 
     "telephone": "", 
     "email": "[email protected]", 
     "website": "", 
     "description": "Mon - 08.00-18.00 Tue - 08.00-18.00 Wed - 08.00-18.00 Thu - 08.00-18.00 Fri - 08.00-18.00 Sat - 08.00-18.00 Sun - 10.00-16.00", 
     "lat": "50.7272", 
     "lng": "-1.83952", 
     "titlewebsite": "Website", 
     "titleemail": "Email", 
     "titletel": "Telephone", 
     "titlecontactstore": "Contact this store", 
     "titlekm": "km", 
     "titlemiles": "miles", 
     "cat_name": "", 
     "cat_img": "", 
     "img": "" 
    }] 
} 

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

EDIT: Копирование и вставка данных из первого print_r и толкая его через json_decode работает отлично. Я предполагаю, что это означает, что есть проблема с тем, откуда происходит JSON, из которого может быть испорчено кодирование или что-то еще?

+0

Не знаю, почему я не пробовал раньше, но он также разбирает хорошо для меня тоже, если я использую данные в Pastebin. Тем не менее, это те же самые данные, что и первый print_r (я копирую и вставляю этот пастабин из этого print_r). Означает ли это, что это проблема кодирования? – jackmullen

+1

Парсы отлично подходят для меня, проверяли ли вы возможные проблемы с кодировкой? Почему вы работаете с stripslashes? –

+0

Я попытался использовать 'iconv()', чтобы убедиться, что строка была в формате UTF-8, но я не уверен, как на самом деле проверить правильность кодировки (у моего клиента нет доступа к коду сервера мне этот ответ json). Для этого были вставлены стрипы, чтобы разместить некоторые из других строк JSON, которые проходят через функцию, я удалил stripslashes, но остался с той же проблемой. – jackmullen

ответ

0

Попробуйте это:

json_decode($this->response, true);

Из документации о втором параметре:

Когда TRUE, возвращаемые объекты будут преобразованы в ассоциативные массивы.

Источник: http://php.net/manual/en/function.json-decode.php