Ошибка парсинга JSON в PHP файле

phpshnov

Новичок
Доброго времени суток.
Записываю данные в файл data.php из переменной с помощью json_encode()

Содержимое data.php:
PHP:
header('Content-Type: application/json');
[{"year":"2018","tons_caught":"10000000"},{"year":"2017","tons_caught":"8700000"},{"year":"2016","tons_caught":"9500000"},{"year":"2015","tons_caught":"2000000"}]
При попытке открыть data.php в браузере Firefox выдает ошибку:
Parse error: syntax error, unexpected '{', expecting ']' in line (линия строки Json)
Подскажите, пожалуйста, в чем может быть ошибка? Проверял онлайн json валидатором, синтаксис вроде бы правильный.
 

Фанат

oncle terrible
Команда форума
Синтакис, я извиняюсь, чего?
С каких пор [{"year":"2018","tons_caught":"10000000"}, стало приавильным синтаксисом РНР?
 

phpshnov

Новичок
Синтакис, я извиняюсь, чего?
С каких пор [{"year":"2018","tons_caught":"10000000"}, стало приавильным синтаксисом РНР?
синтаксис JSON. насколько я понимаю, браузер должен парсить его. Просто мне нужно потом тянуть с этого php файла JSON данные с помощью AJAX и сохранять их в переменные JS дабы потом показывать графически на диаграмме с помощью chartjs. Но браузер выдает ошибку.
 

Фанат

oncle terrible
Команда форума
Это не браузер выдает ошибку. А пхп.
Синтаксис РНР файлов должен соответствовать синтаксису РНР.
Иначе в браузер уйдет не джейсон, а ошибка РНР
 

phpshnov

Новичок
Дв PHP выдает ошибку, конечно же, а браузер её отображает.
Это не браузер выдает ошибку. А пхп.
Синтаксис РНР файлов должен соответствовать синтаксису РНР.
Иначе в браузер уйдет не джейсон, а ошибка РНР
Поэтому я и хочу понять, в чем же ошибка. Почему PHP не парсит строку JSON
 

Фанат

oncle terrible
Команда форума
Потому что РНР парсит только РНР.
Я думал что будет достаточно просто намекнуть на ошибку, поскольку она очевидная.
Но как-то у тебя совсем туго идет.

Почему ты считаешь, что РНР должен "парсить" JSON? Что вообще имеется ввиду под этим "парсить"? А XML он должен "парсить"? С++? Ассемблер? "Войну и мир"?
 

Фанат

oncle terrible
Команда форума
Поясню на примере
Код:
header('Content-Type: application/json');
Над ним не было ничего уже, кроме неба, - высокого неба, не ясного, но все-таки неизмеримо высокого, с тихо ползущими по нём серыми облаками.
 "Как тихо, спокойно и торжественно, совсем не так, как я бежал, - подумал князь Андрей, - не так, как мы бежали, кричали и дрались, совсем не так,
 как с озлобленными и испуганными лицами тащили друг у друга банник француз и артиллерист, - совсем не так ползут облака по этому высокому
бесконечному небу. Как же я не видал прежде этого высокого неба? И как я счастлив, что узнал его наконец. Да! Все пустое, все обман, кроме этого 
бесконечного неба. Ничего, ничего нет, кроме его. Но и того даже нет, ничего нет, кроме тишины, успокоения. И слава богу!
Это РНР тоже должен "парсить"?
 
  • Like
Реакции: AmdY

phpshnov

Новичок
Я просто оставлю это здесь…

Большое спасибо фишка в том, что нужно обязательно писать echo json_encode($имя_переменной);
Вопрос решен, тема закрыта :)
 

AnrDaemon

Продвинутый новичок
Глупый ответ.
Если бы всё программирование строилось по такому принципу ("потому что иначе ошибка"), мы бы до сих пор камнями и палками дома строили.
Попробуйте поискать ответ получше.
 

Фанат

oncle terrible
Команда форума
Потому что без echo PHP будет выдавать ошибку
Скажу тебе по секрету, в твой прошлый код между первой и второй строчкой надо было всего лишь дообавить закрывающей тег PHP, вот такой - ?>

Или, как вариант, убрать первую строчку и переименовать файл в .json
 
Сверху