Convertir JSON a Structs de Rust Gratis – Genera Tipos Rust

Usa el Convertir JSON a Structs de Rust gratuito abajo: tus datos nunca salen de tu navegador, todo el trabajo ocurre en tu dispositivo y no se sube a ningún servidor.

De JSON a Structs de Rust con Serde

Quien desarrolla en Rust y trabaja con APIs conoce bien esta tarea: convertir una respuesta JSON en structs que serde pueda serializar y deserializar. Los structs necesitan los nombres de campo correctos, los tipos correctos y los atributos derive que hacen funcionar a serde. Escribirlos a mano es lento, y un solo tipo incorrecto produce un error de compilación o, peor, un fallo al deserializar en tiempo de ejecución. Esta herramienta genera los structs desde tu JSON, con los derives de serde incluidos, para que puedas pegarlos en tu proyecto y seguir adelante.

Pega el JSON, pon el nombre del struct principal y pulsa Convertir. La herramienta lee todo el documento y produce un struct por objeto. Los textos se convierten en String, los enteros en i64, los decimales en f64, los booleanos en bool y los arreglos en Vec del tipo del elemento. Cada struct lleva los derives Debug, Serialize y Deserialize, que son el punto de partida habitual para modelos de API en Rust.

Nombres de Campo y el Atributo Rename

La convención de Rust usa snake_case para los campos, y la herramienta convierte las claves JSON a snake_case. Una clave como zipCode se convierte en zip_code. Una clave como isActive se convierte en is_active. Cuando el nombre convertido difiere de la clave original, la herramienta añade un atributo serde rename con la clave original, para que la deserialización siga coincidiendo exactamente con el JSON. No tienes que recordar qué campos se renombraron: el atributo está en el resultado.

Esto importa porque serde compara los nombres de campo de forma exacta por defecto. Sin el atributo rename, un campo llamado is_active buscaría una clave JSON llamada is_active, pero tu API envía isActive, así que el campo no se llenaría o toda la conversión fallaría. El atributo rename cierra esa brecha. Si prefieres configurar serde de otra manera, por ejemplo con rename_all en el struct, puedes quitar los atributos individuales y añadir una línea por struct. El código generado es un punto de partida, no una camisa de fuerza.

Tipos, Opciones y Valores Desconocidos

Los números merecen cuidado en Rust porque el sistema de tipos es estricto. La herramienta usa i64 para los enteros, que cubre todo el rango de enteros JSON que envían la mayoría de las APIs, y f64 para los decimales. Si tu API envía enteros pequeños que preferirías modelar como i32 o u32, cámbialos después de generar. La herramienta elige el tipo amplio y seguro en lugar de adivinar uno estrecho.

Los valores nulos se convierten en Option de serde_json Value. Esa es la traducción honesta: la muestra no dice nada sobre lo que el campo contiene cuando tiene valor, así que la herramienta usa el tipo JSON más general dentro de Option. Sustitúyelo por el tipo real cuando lo conozcas, por ejemplo Option de String. Lo mismo vale para los arreglos vacíos, que se convierten en Vec de serde_json Value.

Un apunte práctico: usar serde_json Value exige serde_json como dependencia, además de serde con derive. Si sustituyes cada Value por un tipo concreto, puedes eliminar esa dependencia. El compilador te avisará rápido si falta algo.

Structs Anidados y Nombres

Los objetos anidados se convierten en sus propios structs. Un objeto de dirección se convierte en un struct Address. Un arreglo de pedidos se convierte en un Vec de Order, con el nombre en singular a partir del campo. Si dos campos produjeran el mismo nombre de struct, la herramienta numera el segundo, así que el resultado siempre compila. Cambia el nombre de los structs numerados por nombres con significado cuando veas qué contienen.

Pon buenos nombres a los structs desde el principio. Un struct principal llamado Root sirve para una primera prueba, pero ApiResponse o UserProfile se lee mejor en código real. Pon el nombre principal antes de convertir y cambia el nombre de los structs anidados justo después. Los buenos nombres son la documentación más barata que puedes añadir a un modelo.

Un Flujo de Trabajo que Detecta Problemas Reales

Convierte la respuesta más completa que tengas, no un ejemplo recortado. Un ejemplo recortado oculta las formas anidadas y los campos anulables que causan errores reales de deserialización. Después, prueba los structs generados con una segunda respuesta de la misma API. Si un campo falta en una respuesta y está presente en otra, hazlo Option. Si un número llega como texto en una respuesta, cambia el tipo a String y conviértelo tú mismo.

Presta atención a los enums disfrazados. Un campo como status que solo toma unos pocos valores de texto es un buen candidato para un enum de Rust con serde, pero la herramienta genera un String porque no puede conocer el conjunto completo de valores a partir de una sola muestra. Esa es la opción correcta por defecto: un String siempre se convierte, mientras que un enum falla ante un valor inesperado. Pasa a enum de forma deliberada, cuando tengas la lista completa de valores posibles en la documentación de la API.

Privacidad

Toda la conversión ocurre en tu navegador. Tu JSON nunca sale de tu dispositivo, no se guarda y no se envía a ningún servidor. Eso hace que la herramienta sirva para respuestas con datos reales de usuarios, aunque conviene mantener las claves de API fuera del texto pegado como hábito general. No hace falta cuenta y la herramienta es gratuita.

Herramientas relacionadas

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top