Javascript: codificar y decodificar de forma recursiva la cadena de consulta. (objeto a cadena de consulta, cadena de consulta a objeto)
Quiero codificar un objeto JSON/JavaScript complejo en la codificación estándar de la cadena de consulta.
Y quiero decodificar esta cadena de consulta de vuelta a un objeto JSON/JavaScript.
Debería hacerse de forma recursiva, con arrays, objetos, cadenas de texto, booleanos y números.
Pensé que esto sería fácil, pero me demostraron lo contrario. ¿Alguien tiene alguna idea de cómo resolver este problema?
Ya sea en JavaScript o preferiblemente en TypeScript.
davy.ai
Solución para codificar y decodificar objetos JSON/JavaScript complejos
Si desea codificar un objeto JSON/JavaScript complejo en la codificación de cadena de consulta estándar, puede utilizar la función
encodeURIComponent()
proporcionada por JavaScript. Esta función convertirá los caracteres especiales en caracteres ASCII estándar que se pueden utilizar en la URL.Aquí tienes un ejemplo de cómo puedes codificar un objeto JSON/JavaScript:
El código anterior convertirá el objeto dado en formato de parámetro de consulta. La variable
qs
contendrá la cadena codificada:Para decodificar la cadena de consulta de nuevo a un objeto JSON/JavaScript, puedes utilizar las funciones
decodeURIComponent()
yJSON.parse()
proporcionadas por JavaScript. Aquí tienes un ejemplo de cómo puedes decodificar la cadena codificada y obtener el objeto original:Esto convertirá la cadena de consulta de nuevo en el objeto original:
Ten en cuenta que el código anterior decodificará de forma recursiva los objetos JSON/JavaScript anidados, arrays, cadenas, booleanos y números.
En Typescript, puedes utilizar el mismo enfoque con anotaciones de tipo. Sin embargo, como Typescript es un superconjunto de JavaScript, puedes utilizar esta solución directamente en un archivo de Typescript.