Aller au contenu

JSON vers schéma Protobuf

Transforme un exemple JSON en une définition de message Protocol Buffers .proto.

Entrée
Sortie

JSON vers schéma Protobuf

Collez un exemple JSON et cet outil déduit la structure de vos données et les écrit sous forme de définition de message Protocol Buffers, prête à être insérée dans un fichier .proto. Il est conçu pour le cas courant de convertir une réponse d'API, un objet de configuration ou un enregistrement de journal en un schéma de démarrage, sans avoir à taper les numéros et types de champs à la main.

Choisissez la syntaxe proto3 ou proto2, nommez le message racine et ajoutez une déclaration de package si votre projet l'utilise. Les numéros de champs commencent à 1 par défaut et s'incrémentent de 1 par champ, tous deux configurables pour un schéma de numérotation réservé. Les tableaux deviennent des champs repeated, et un objet dont les valeurs sont toutes du même type — une recherche indexée par identifiant ou code de langue — devient map<string, T> au lieu d'un message fixe, évitant qu'un champ de dictionnaire ne devienne des dizaines de champs nommés. Activez le mot-clé optional pour marquer les champs manquants ou null dans une partie de votre exemple, et basculez les messages imbriqués pour garder les types enfants à l'intérieur de leur parent plutôt que comme frères et sœurs de haut niveau. Les chaînes au format ISO 8601 sont mappées à google.protobuf.Timestamp, et chaque champ peut porter un commentaire avec sa clé JSON d'origine.

Les objets profondément imbriqués, les tableaux d'objets, les tableaux de tableaux et les champs de type mixte sont tous traités : une valeur véritablement mixte revient à google.protobuf.Value avec l'importation correspondante ajoutée automatiquement. Le JSON malformé est signalé avec la ligne et la colonne où l'analyse a échoué, plutôt qu'une erreur générique.

Tout s'exécute localement dans votre navigateur — votre JSON n'est jamais téléchargé nulle part. Copiez le schéma généré, téléchargez-le en tant que fichier .txt à renommer en .proto, ou envoyez la sortie à un autre outil pour continuer à travailler.

FAQ

Produit-il une syntaxe .proto réelle et compilable?
Oui — la sortie est une syntaxe de message protobuf simple (proto2 ou proto3) que vous pouvez coller directement dans un fichier .proto. La maintenance à long terme, comme le maintien des numéros de champs stables entre les modifications de schéma, reste votre responsabilité.
Comment décide-t-il entre une map et un message pour un champ d'objet?
Quand chaque valeur à l'intérieur d'un objet est du même type scalaire, elle est rendue sous forme de map<string, T> — la forme qu'un dictionnaire réel a. Dès qu'un objet mélange les types de valeur dans ses clés, il devient un champ de message nommé champ par champ à la place.
Que se passe-t-il avec un champ qui a des types différents dans un échantillon?
Il revient à google.protobuf.Value, avec l'importation correspondante ajoutée automatiquement en haut du schéma. Affinez le type de champ à la main une fois que vous avez décidé quel type est autoritaire.
Puis-je numéroter les champs en commençant ailleurs que 1?
Oui — définissez le numéro de départ et le pas dans les options. La numérotation redémarre à votre valeur de démarrage choisie à l'intérieur de chaque message imbriqué, correspondant à la façon dont protobuf étend les numéros de champs.
Mon JSON est-il téléchargé quelque part?
Non. La génération de schéma s'exécute entièrement dans votre navigateur — votre JSON ne quitte jamais votre appareil.