Estoy trabajando en un proyecto que utiliza la API de theyworkforyou (organización de datos políticos con sede en el Reino Unido) y específicamente la función getMPInfo() que toma la identificación del MP (miembro del parlamento) y devuelve muchos datos sobre ellos (cuando asumieron el cargo, cuánto tiempo han estado en el cargo, etc.)
El problema que tengo es que la siguiente línea de código funciona en todas las ID que he probado excepto en una (que he encontrado hasta ahora):
var_dump(json_decode(file_get_contents("http://www.theyworkforyou.com/api/getMPInfo?key=MY_KEY&id=SOME_ID&output=js")));si hago una llamada json_last_error() obtengo JSON_ERROR_UTF8 en esa ID.
El ID en cuestión es 10999. Puede probarlo en la sección de documentos de su portal API aquí .
Si acabo de mostrar http://www.theyworkforyou.com/api/getMPInfo?key=MY_KEY&id=10999&output=js en la pantalla y lo copio y lo pego en un validador json, parece pasar bien la prueba. He probado con 3 hasta ahora y ninguno ha encontrado una falla.
¿Alguien puede ver cuál es el problema o qué he hecho potencialmente mal? Podría ser una falla de la API, por supuesto, pero nunca he tenido un problema con ningún error de análisis json usando esta API en el pasado (la he estado usando con todos los MP en el pasado durante algunos años). funciona para todas las demás ID de MP con las que lo he probado y, como dije, parece ser json válido desde el punto de vista de los validadores en línea.
Gracias por tu tiempo.
PD: no estoy seguro de cómo podría replicar mi problema sin una clave API, así que aquí hay un enlace a la página de inicio del portal API donde puede registrarse para obtener una clave API.
JSON_ERROR_UTF8 error significa
Caracteres UTF-8 con formato incorrecto, posiblemente codificados incorrectamente
json_encode dice
Todos los datos de cadena deben estar codificados en UTF-8
Entonces solo necesita utf8_encode su entrada antes de pasarla a json_encode .