Cómo se usa
- Pega un ejemplo de JSON realista: cuantos más elementos tenga un array, mejor se detectan las claves opcionales.
- Elige clases o records y si quieres atributos [JsonPropertyName].
- Copia el código a un archivo .cs. El tipo raíz se llama Root; cámbiale el nombre según tu proyecto.
Cómo funciona
El ejemplo se convierte en una «forma»: cada clave con todos los tipos que aparecen en ella. Todos los objetos de un array se fusionan en una clase, así que una clave que solo está en algunos pasa a admitir null.
- Los nombres de propiedad van en PascalCase a partir de la clave: order_id → OrderId, first-name → FirstName, 2fa → N2fa.
- Una propiedad no puede llamarse como su clase, por eso la clave item dentro de la clase Item pasa a ItemValue.
- Los nombres de clase también salen de las claves: items contiene List
- , customer pasa a Customer. Root va primero y las clases anidadas después.
- Si el nivel superior es un array, un comentario indica el tipo para deserializar, por ejemplo List
.
Ejemplo
{"items":[{"sku":"A","note":null,"qty":1},{"sku":"B","note":"x"}]} como clases sin atributos da:
using System.Collections.Generic;
public class Root
{
public List<Item> Items { get; set; } = new();
}
public class Item
{
public string Sku { get; set; } = "";
public string? Note { get; set; }
public long? Qty { get; set; }
}
note vale null una vez, así que es string?. qty falta en el segundo elemento, así que es long?.
Consejos
- Revisa los números que tuvieron suerte en el ejemplo: un precio de 24 en todos los elementos da long, aunque los datos reales tengan 24,99.
- Deserializa con
JsonSerializer.Deserialize<Root>(json); para un array de nivel superior usa el tipo del comentario. - Para otros lenguajes, mira JSON a Java, JSON a TypeScript y JSON a Go.