Qué hace esta herramienta
Una muestra JSON pasa a ser data class de Kotlin, una por objeto.
{ "id": 1, "firstName": "Ada", "address": { "city": "Paris" } }
data class Root(
val id: Long,
val firstName: String,
val address: Address,
)
data class Address(
val city: String,
)
Cada propiedad es un val: una carga decodificada es un valor. Las data class te dan equals, hashCode, toString y copy(); esta última es la forma de cambiar un campo sin mutar nada.
La clave sigue siendo la clave
Los identificadores de Kotlin se escriben entre acentos graves, y con eso basta para conservar una clave JSON tal cual:
data class Root(
val `content-type`: String,
val `class`: Long,
val `2fa`: Boolean,
)
class es palabra clave, content-type lleva guion, 2fa empieza por dígito: nada de eso importa entre acentos graves. Con kotlinx.serialization, el nombre de la propiedad es el nombre JSON: se decodifica así, sin anotación alguna.
Con Jackson o Moshi, el nombre de la propiedad también es lo que buscan, así que los nombres entre acentos graves funcionan igual. Solo si decides renombrar una propiedad —contentType en vez de `content-type`— necesitas @JsonProperty("content-type") o @Json(name = "content-type") para volver a apuntar a la clave.
Los tipos y el ? que no está
- Los enteros pasan a
Longy los decimales aDouble, lo que un número JSON puede llevar sin discusión. nully los valores desconocidos pasan aAny?: el único sitio donde aparece un signo de interrogación, porque es el único donde la muestra mostraba uno.- Un array vacío o mezclado pasa a
List<Any>.
Nada más admite nulos y nada tiene valor por defecto. Un campo a veces ausente es un ? y un = null que añades tú, cuando una segunda carga te haya dicho lo que esta no podía.
Dos claves, dos propiedades
Dos claves que chocarían como nombres de propiedad se mantienen separadas en vez de fundirse: la segunda lleva un sufijo numerado. Como el nombre entre acentos graves es el nombre JSON, aquí las colisiones son raras: solo ocurren cuando la reparación es inevitable.
Privado por diseño
Todo se ejecuta localmente en tu navegador con JavaScript. Tus datos nunca se suben a un servidor, lo que hace que la herramienta sea segura para contenido sensible y funcione sin conexión.