Как я могу исправить свой код для печати синтаксиса jSON?

Я пытаюсь получить содержимое jSON похожий на страницу и распечатать все значения, как вы можете видеть в моем коде ниже.

ОБНОВЛЕННЫЙ КОД

<?php $json = file_get_contents('http://www.carqueryapi.com/api/0.3/?callback=?&cmd=getTrims&year=2007&make=mini'); $vres = array('?({"Trims":' , '});'); $allakse = array("" , ""); $json = str_replace($vres, $allakse, $json); echo $json; $cars = json_decode($json, true); foreach ($cars[0] as $value) { echo $value, "<br>"; } 

так выглядит файл.

 ?({ Trims: [ { "model_id":"15155" ,"model_make_id":"ford" ,"model_name":"Taurus" ,"model_trim":"" ,"model_year":"2000" ,...(all available model fields are included) }, { "model_id":"15073" ,"model_make_id":"ford" ,"model_name":"Taurus" ,"model_trim":"3.0" ,"model_year":"2000" ,...(all available model fields are included) }, {etc...} ]}); 

Даже если я заменил некоторые символы, чтобы он выглядел как синтаксис jSON в начале и в конце, я не могу заставить его работать. Что я делаю не так?

Related of "Как я могу исправить свой код для печати синтаксиса jSON?"

Ответ прерывается JSON-P, а не JSON.

JSON-P состоит из вызова функции (к имени функции, которое вы указываете в URL-адресе ( ? В этом случае)) с данными, переданными через первый аргумент.

В JSON-P эти данные должны быть JSON. В этом случае это не так. Это литерал объекта JavaScript, который не соответствует подмножеству, соответствующему спецификации JSON. (В частности, у вас есть имена свойств, выраженные как идентификаторы вместо строковых литералов).

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

Кроме того, вы можете посмотреть, как запустить движок JavaScript (например, Node.js или Rhino), определяя функцию, которая передает первый аргумент JSON.stringify() , затем печатает результат (а затем записывает его обратно в переменную PHP) ,


Обновить:

Я посмотрел URL, который вы указали. Вывод не соответствует данным в вопросе. JSON действительно действует и без проблем, которые показывает ваш код.

Просто прекратите запрашивать callback=? чтобы получить JSON вместо JSON-P. Тогда вам не нужно снимать обертку JSON-P.