jsondecoder — PHP: JSON_DECODE не работает для следующих данных

Я пытаюсь декодировать эти данные JSON с помощью кода ниже, но это не работает.

$data = 'VA_OnQueryData({"name":"John","id":"354902332592"});';
return json_decode($data);

-2

Решение

Избавиться от callback Параметр в вашем URL. Вместо этого:

https://api.vinaudit.com/query.php?key=VA_MAIN&Обратный вызов = VA_OnQueryData&Vin = 1C6RR6LT3HS847897

Использовать этот:

https://api.vinaudit.com/query.php?key=VA_MAIN&Vin = 1C6RR6LT3HS847897

Тогда вы получите действительно полезный JSON.

Метод, который вы использовали, был JSON-P, и раньше использовался, чтобы обойти проблемы между доменами, посылая исполняемый JavaScript. Этот метод больше не требуется на стороне клиента благодаря CORS, и никогда не требовалось на стороне сервера.

Кроме того, вернитесь к тому, кто делает этот API, и скажите им, что они используют неправильный Content-Type заголовок ответа. Они отправляют text/html… так должно быть application/json, (Ref: https://stackoverflow.com/a/477819/362536)

10

Другие решения

Привет, что вы пытаетесь JSON_decode не является действительным JSON.

Если вам нужно работать с этим способом, вам необходимо сначала очистить его следующим образом:

$data = 'VA_OnQueryData({"vin":"1C6RR6LT3HS847897","id":"697015470432","attributes":{"VIN":"1C6RR6LT3HS847897","Year":"2017","Make":"Ram","Model":"1500","Trim":"Lone Star","Made In":"United States","Style":"Crew Cab Pickup (4-Door)","Engine":"5.7L V8 OHV 16V"},"success":true,"error":""});';

preg_match('/{.*}/', $data, $cleaned);

return json_decode($cleaned[0]);

Выход этого:

stdClass Object
(
[vin] => 1C6RR6LT3HS847897
[id] => 697015470432
[attributes] => stdClass Object
(
[VIN] => 1C6RR6LT3HS847897
[Year] => 2017
[Make] => Ram
[Model] => 1500
[Trim] => Lone Star
[Made In] => United States
[Style] => Crew Cab Pickup (4-Door)
[Engine] => 5.7L V8 OHV 16V
)

[success] => 1
[error] =>
)
1

Это не работает, потому что это не JSON. Попробуйте это вместо этого:

$data = '{"name":"John","id":"354902332592"}';
return json_decode($data);
0
По вопросам рекламы [email protected]