JSON → Apache Avro (.avsc)
Apache Avro & Confluent Schema Registry

JSON to Apache Avro Schema (.avsc) Converter

Convertissez des charges utiles JSON en schémas Apache Avro (.avsc) prêts pour la production, avec gestion des espaces de noms, types primitifs et logiques, champs union avec null et règles d'évolution.

Confidentialité 100% côté client
Zero Server Upload
Préréglages :
Avro Compiler Options & Schema Registry Settings
OrderFulfillmentEvent•smart
Champs
Entrée21 fields
{
"type": "record",
"name": "OrderFulfillmentEvent",
"namespace": "com.ecommerce.events.orders",
"doc": "Standard Avro event schema compiled from JSON payload for OrderFulfillmentEvent",
"fields": [
{
"name": "eventId",
"type": {
"type": "string",
"logicalType": "uuid"
},
"doc": "Standard UUID identifier for eventId",
"default": "00000000-0000-0000-0000-000000000000"
},
{
"name": "orderNumber",
"type": "string",
"doc": "Text string for orderNumber",
"default": ""
},
{
"name": "eventType",
"type": "string",
"doc": "Text string for eventType",
"default": ""
},
{
"name": "occurredAt",
"type": {
"type": "long",
"logicalType": "timestamp-millis"
},
"doc": "UTC timestamp (milliseconds since epoch) for occurredAt",
"default": 0
},
{
"name": "customer",
"type": {
"type": "map",
"values": "string"
},
"doc": "Associative string-keyed map for customer",
"default": {}
},
{
"name": "shippingAddress",
"type": {
"type": "map",
"values": "string"
},
"doc": "Associative string-keyed map for shippingAddress",
"default": {}
},
{
"name": "lineItems",
"type": {
"type": "array",
"items": {
"type": "record",
"name": "LineItemsItem",
"namespace": "com.ecommerce.events.orders",
"doc": "Standard Avro event schema compiled from JSON payload for LineItemsItem",
"fields": [
{
"name": "sku",
"type": "string",
"doc": "Text string for sku",
"default": ""
},
{
"name": "productName",
"type": "string",
"doc": "Text string for productName",
"default": ""
},
{
"name": "quantity",
"type": "int",
"doc": "Numeric value (int) for quantity",
"default": 0
},
{
"name": "unitPrice",
"type": "double",
"doc": "Numeric value (double) for unitPrice",
"default": 0
},
{
"name": "currency",
"type": "string",
"doc": "Text string for currency",
"default": ""
},
{
"name": "isTaxExempt",
"type": "boolean",
"doc": "Boolean flag for isTaxExempt",
"default": false
}
]
}
},
"doc": "List of LineItemsItem records for lineItems",
"default": []
},
{
"name": "subtotal",
"type": "double",
"doc": "Numeric value (double) for subtotal",
"default": 0
},
{
"name": "taxAmount",
"type": "double",
"doc": "Numeric value (double) for taxAmount",
"default": 0
},
{
"name": "shippingFee",
"type": "int",
"doc": "Numeric value (int) for shippingFee",
"default": 0
},
{
"name": "grandTotal",
"type": "double",
"doc": "Numeric value (double) for grandTotal",
"default": 0
},
{
"name": "currency",
"type": "string",
"doc": "Text string for currency",
"default": ""
},
{
"name": "couponCode",
"type": [
"null",
"string"
],
"doc": "Nullable string field for couponCode",
"default": null
},
{
"name": "payment",
"type": {
"type": "map",
"values": "string"
},
"doc": "Associative string-keyed map for payment",
"default": {}
},
{
"name": "notes",
"type": "string",
"doc": "Text string for notes",
"default": ""
}
]
}
Champs21 champs (1 nullable)
Hierarchy & Max DepthNiveau 1 (1 enregistrements)
Logical Types & Compatibility2 types logiques • BACKWARD

Exécution Locale Zero-Knowledge

Tous les traitements, analyses et générations s'exécutent strictement dans la mémoire de votre navigateur. Zéro transmission vers un serveur externe.

Moteur Réactif Submilliseconde

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Référence technique et guide d'architecture

Guide Développeur du Convertisseur JSON vers Schéma Apache Avro (.avsc) — Guide de référence

Convertissez des charges utiles JSON en schémas Apache Avro (.avsc) prêts pour la production, avec gestion des espaces de noms, types primitifs et logiques, champs union avec null et règles d'évolution.

Paramètres clés et contrôles

recordNamestring

Identifiant de l'enregistrement racine pour le schéma Avro généré, respectant les conventions de nommage Avro (doit débuter par [A-Za-z_] et ne contenir que des caractères alphanumériques ou tirets bas).

Par défaut : AutoRecord
namespacestring

Espace de noms de package ou de domaine (ex. com.company.events) qui isole l'enregistrement et prévient les conflits au sein du Schema Registry.

Par défaut : com.example.avro
nullabilityModestring

Définit le mappage des champs optionnels ou nuls. Le mode 'union_null_first' produit ["null", type] avec default: null pour garantir la compatibilité ascendante.

Par défaut : union_null_first
inferLogicalTypesboolean

Active la détection automatique des horodatages ISO 8601, des identifiants UUID et des décimaux haute précision, en appliquant les annotations logicalType d'Avro (ex. timestamp-millis, uuid).

Par défaut : true

Conseils de pro et bonnes practices

Ordre des branches de l'union

Selon la spécification Apache Avro 1.x, la valeur par défaut (default) doit correspondre à la première branche de l'union. Avec "default": null, déclarez obligatoirement ["null", "string"] et non ["string", "null"].

Valeurs par défaut évolutives

Lors de la publication de nouvelles versions de schémas sur Confluent Schema Registry ou Apicurio, spécifiez systématiquement une valeur par défaut pour chaque nouveau champ afin de respecter la compatibilité BACKWARD et FULL.

Mappage des entiers vers long

Les entiers JSON dépassant 2^31 - 1 (comme les horodatages en millisecondes ou les identifiants techniques de bases de données) doivent être mappés vers le type 'long' pour éviter tout dépassement d'entier lors de la sérialisation binaire.

Pièges courants et dépannage

org.apache.avro.AvroTypeException: Default value for field does not match union branch 0

Réorganisez le tableau de types de l'union de manière à ce que le type de la valeur par défaut soit en première position. Pour "default": null, commencez par "null", comme dans ["null", "string"].

Confluent Schema Registry génère une exception SchemaIncompatibleException sur les nouveaux champs

Ajoutez un attribut "default" explicite (tel que null, une chaîne vide "" ou false) à chaque nouveau champ intégré dans la définition .avsc.

Foire aux questions (FAQ)

Qu'est-ce qu'un fichier de schéma Apache Avro .avsc ?▼

Un fichier .avsc est une spécification au format JSON décrivant un schéma Apache Avro. Il définit les noms d'enregistrements, les espaces de noms, les types de champs et les valeurs par défaut utilisés pour la sérialisation binaire dans Kafka, Spark et Hadoop.

Comment les objets imbriqués et les tableaux JSON sont-ils traduits en Avro ?▼

Les objets JSON imbriqués sont transformés en enregistrements Avro intégrés munis de leurs propres 'name', 'type': 'record' et 'fields'. Les tableaux sont convertis en type 'array' avec une sous-propriété 'items' définissant le type des éléments.

Pourquoi préférer le binaire Avro au JSON brut dans les flux événementiels ?▼

Avro sérialise les données sous forme binaire compacte sans répéter les noms de champs à chaque message. Le schéma est centralisé dans un Schema Registry, ce qui réduit considérablement l'empreinte réseau et assure une gouvernance stricte des contrats de données.

Que sont les types logiques (Logical Types) dans Avro ?▼

Les types logiques attribuent une signification métier à des types primitifs. Avec inferLogicalTypes actif, les dates sont représentées par un type 'long' enrichi de 'timestamp-millis', et les identifiants UUID par un type 'string' enrichi de 'uuid'.

Outils et utilitaires connexes

Tous les outils →
Guide Développeur : Générateur de Schémas de Validation Zod depuis GraphQL SDLDéveloppement

Convertissez les types, requêtes et inputs GraphQL SDL en schémas de validation Zod à l'exécution (z.object, z.string, z.array) avec prise en charge avancée de la nullabilité.

Ouvrir l'outil→
Guide de développement du convertisseur GraphQL SDL vers types et interfaces TypeScriptDéveloppement

Transformez vos types, inputs et énumérations GraphQL SDL directement en interfaces et types TypeScript propres et sans dépendances.

Ouvrir l'outil→
K8S Configmap Secret Generator Référence DéveloppeurDéveloppement

Utilitaire de développement pour générer des manifestes Kubernetes ConfigMap et Secret avec encodage Base64, stringData, TLS, Docker registry auth et flags de ressources immuables.

Ouvrir l'outil→
Guide Développeur du Générateur Kubernetes HorizontalPodAutoscaler (HPA v2)Développement

Générez des manifestes YAML HPA v2 avec objectifs d'utilisation CPU et mémoire, métriques personnalisées et politiques de stabilisation de mise à l'échelle.

Ouvrir l'outil→
Générateur et Optimiseur de Configuration de Production Redis (redis.conf)Développement

Générez des fichiers de configuration redis.conf taillés pour la production avec gestion fine de maxmemory, persistance RDB/AOF, liaison réseau étanche et authentification ACL.

Ouvrir l'outil→
Guide Développeur : Optimiseur et Générateur Hardware pour PostgreSQL (postgresql.conf)Développement

Calculez et générez des paramètres postgresql.conf optimisés en fonction des spécifications matérielles (shared_buffers, work_mem, effective_cache_size, max_connections).

Ouvrir l'outil→