Nous avons ce schéma json draft . Je souhaite obtenir un échantillon de mes données JSON et générer un squelette pour le schéma JSON, que je peux retravailler manuellement, en ajoutant des éléments tels que description, requis, etc., qui ne peuvent pas être déduits des exemples spécifiques.
Par exemple, à partir de mon entrée example.json
:
{
"foo": "lorem",
"bar": "ipsum"
}
Je lancerais mon outil json_schema_generator et obtiendrais:
{ "foo": {
"type" : "string",
"required" : true,
"description" : "unknown"
},
"bar": {
"type" : "string",
"required" : true,
"description" : "unknown"
}
}
Cet exemple a été codé manuellement, il peut donc contenir des erreurs. Existe-t-il un outil qui pourrait m'aider à convertir le schéma JSON -> JSON?
Voyant que cette question suscite de nombreux votes positifs, j'ajoute de nouvelles informations (je ne sais pas si c'est nouveau, mais je ne pouvais pas le trouver à ce moment-là).
Vous recherchez peut-être ceci:
C'est un outil en ligne qui peut générer automatiquement un schéma JSON à partir d'une chaîne JSON. Et vous pouvez facilement modifier le schéma.
Résumant les autres réponses, voici les générateurs de schéma JSON proposés jusqu'à présent:
En ligne:
Python:
NodeJS:
Rubis:
Après plusieurs mois, la meilleure réponse que j'ai est mon outil simple. C'est brut mais fonctionnel.
Ce que je veux, c'est quelque chose de similaire à this . Les données JSON peuvent fournir un squelette pour le schéma JSON. Je ne l'ai pas encore implémenté, mais il devrait être possible de donner un schéma JSON existant comme base, afin que le schéma JSON existant et les données JSON puissent générer un schéma JSON mis à jour. Si aucun schéma de ce type n'est donné en entrée, toutes les valeurs par défaut sont prises.
Cela serait très utile pour le développement itératif: lors de la première utilisation de l'outil, le schéma JSON est factice, mais il peut être affiné automatiquement en fonction de l'évolution des données.
Il existe un outil python permettant de générer un schéma JSON pour un JSON donné: https://github.com/perenecabuto/json_schema_generator
Il existe un outil nodejs qui prend en charge json schema v4 à l’adresse https://github.com/krg7880/json-schema-generator
Cela fonctionne soit comme un outil de ligne de commande, soit comme une bibliothèque nodejs:
var jsonSchemaGenerator = require('json-schema-generator'),
obj = { some: { object: true } },
schemaObj;
schemaObj = jsonSchemaGenerator(json);
json-schema-generator est un générateur de schéma JSON soigné basé sur Ruby. Il prend en charge les brouillons 3 et 4 du schéma JSON. Il peut être exécuté en tant qu'exécutable autonome ou intégré dans un script Ruby.
Ensuite, vous pouvez utiliser json-schema pour valider les échantillons JSON par rapport à votre schéma nouvellement généré, si vous le souhaitez.
Il y a beaucoup d'outils mentionnés, mais un autre inferencer appelé JSON Schema pour l'enregistrement:
https://github.com/rnd0101/json_schema_inferencer
(ce n'est pas une bibliothèque ou un produit, mais un script Python)
Avec la divulgation complète habituelle: je suis l'auteur.
Pour les outils hors ligne prenant en charge plusieurs entrées, le meilleur que j'ai vu jusqu'à présent est https://github.com/wolverdude/GenSON/ J'aimerais voir un outil qui prend les noms de fichiers en standard entrée parce que j'ai des milliers de fichiers. Cependant, je manque de descripteurs de fichiers ouverts, assurez-vous donc que les fichiers sont fermés . J'aimerais également voir les générateurs de schémas JSON qui gèrent la récursivité. Je travaille maintenant à la génération de Java classes à partir d'objets JSON dans l'espoir de passer au schéma JSON à partir de mon Java. _ Des classes. Voici mon script GenSON si vous êtes curieux ou souhaitez identifier des bogues.
#!/bin/sh
ulimit -n 4096
rm x3d*json
cat /dev/null > x3d.json
find ~/Downloads/www.web3d.org/x3d/content/examples -name '*json' - print| xargs node goodJSON.js | xargs python bin/genson.py -i 2 -s x3d.json >> x3d.json
split -p '^{' x3d.json x3d.json
python bin/genson.py -i 2 -s x3d.jsonaa -s x3d.jsonab /Users/johncarlson/Downloads/www.web3d.org/x3d/content/examples/X3dForWebAuthors/Chapter02-GeometryPrimitives/Box.json > x3dmerge.json
Pour node.js> 6.0.0, il existe également le module json-schema-by-example .