Error de JSON malformed al enviar datos a Zoho

Zoho es una excelente herramienta en la nube para la administración de negocios. Posee una excelente API REST para realizar integración de datos entre sistemas. Hace unos días tuve problemas para subir información al API y me arrojaba el error JSON malformed.

Cómo solucionar el error de JSON malformed

La documentación no indica cual puede ser el problema y en que campo. Obviamente es un error de codificación de JSON pero al revisar mi código y los datos que estaba enviando, noté que el JSON estaba bien validado. Pero me di cuenta que Zoho pide enviar el JSON dentro del cuerpo de la petición en texto plano, no en formato JSON. Por ello, al codificar los campos en la cadena, el símbolo de ampersand ( & ) puede confundirse como el inicio de un parámetro GET. Así que es necesario codificarlo con su respectivo valor en HTML que es %26.

Así que para solucionar mi problema tuve simplemente que reemplazar el valor luego de ser codificado en JSON:

$jsonString = str_replace('&', '%26', json_encode($invoice));
$body = '&JSONString=' . $jsonString;

¡Listo! Ahora si podrás subir la data a Zoho.

Deja un comentario