Outil pour générer un schéma JSON à partir de données JSON [fermé]

, Nous avons ce schéma json projet de. Je voudrais 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 choses comme description, required, 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"
}

J'exécuterais 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, donc il a peut-être des erreurs. Est-il un outil de ce qui pourrait m'aider avec la conversion JSON - > schéma JSON?

127
demandé sur jruizaranguren 2011-09-08 03:14:15

13 réponses

Vous cherchez peut-être ceci:

Http://www.jsonschema.net

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 modifier le schéma facilement.

81
répondu Green Su 2012-05-30 03:13:43

Résumant les autres réponses, voici les générateurs de schémas JSON proposés jusqu'à présent:

En Ligne:

Python:

NodeJS:

Ruby:

43
répondu Steve Bennett 2017-12-14 02:39:31

Voyant que cette question reçoit pas mal de upvotes, j'ajoute de nouvelles informations (je ne suis pas sûr que ce soit nouveau, mais je ne pouvais pas le trouver à ce moment-là)

20
répondu dangonfast 2014-06-20 13:30:55

GenSON ( PyPI | Github ) est un nouveau générateur de schéma JSON qui peut générer un seul schéma à partir de plusieurs objets. Vous pouvez également fusionner des schémas avec elle. Il est écrit en Python et est livré avec un outil CLI.

(divulgation Complète: je suis l'auteur.)

17
répondu wolverdude 2014-11-30 07:19:36

Après plusieurs mois, la meilleure réponse que j'ai est mon outil simple. Il est brut mais fonctionnel.

Ce que je veux est quelque chose de similaire à CE . 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, de sorte que le schéma JSON existant plus les données JSON puissent générer un schéma JSON mis à jour. Si un tel schéma n'est pas donné en entrée, des valeurs par défaut sont prises.

Ce serait être très utile dans le développement itératif: la première fois que l'outil est exécuté, le schéma JSON est factice, mais il peut être affiné automatiquement en fonction de l'évolution des données.

5
répondu dangonfast 2013-04-20 11:10:11

Il existe un outil python pour générer un schéma JSON pour un JSON donné: https://github.com/perenecabuto/json_schema_generator

5
répondu Vinícius Mendes 2013-05-07 21:02:14

generate-schema (NPM | Github ) prend un objet JSON génère des schémas à partir de celui-ci, une sortie est un schéma JSON, il est écrit dans Node.js et est livré avec un outil REPL et ClI pour la tuyauterie des fichiers dans.

Divulgation Complète: je suis l'auteur :)

4
répondu Nijikokun 2015-02-23 22:50:00

JSON-schema-generator est un générateur de schéma JSON basé sur Ruby. Il prend en charge les projets 3 et 4 du schéma JSON. Il peut être exécuté en tant qu'exécutable autonome, ou il peut être intégré à L'intérieur d'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.

3
répondu HappyCoder86 2014-07-03 21:17:41

Il y a un outil nodejs qui prend en charge le schéma json V4 à https://github.com/krg7880/json-schema-generator

Il 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);
3
répondu Johann Philipp Strathausen 2016-01-26 14:59:31

Il y a beaucoup d'outils mentionnés, mais un autre appelé inferencer de schéma JSON 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.

2
répondu Roman Susi 2015-05-11 08:33:20

Pour les outils hors ligne qui prennent 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 sur l'entrée standard car j'ai des milliers de fichiers. Cependant, je manque de descripteurs de fichiers ouverts, alors assurez-vous que les fichiers sont fermés. Je voudrais également voir des générateurs de schéma JSON qui gèrent la récursivité. Je travaille maintenant sur la génération de classes Java à partir d'objets JSON dans l'espoir d'aller au schéma JSON de mes cours Java. Voici mon script GenSON si vous êtes curieux ou si vous voulez identifier les bugs.

#!/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 
2
répondu John Carlson 2015-11-07 08:27:47

Pour le noeud.js > 6.0.0 il y a aussi le json schema par exemple module.

0
répondu Jerome WAGNER 2016-07-24 17:06:20

Il y a aussi skinfer , qui peut déduire le schéma à partir d'une liste d'échantillons, en trouvant quels champs sont facultatifs. Il peut également fusionner des schémas.

, Il peut être utilisé à la fois comme un script ou une bibliothèque Python, voir plus à: https://skinfer.readthedocs.org

-1
répondu elias 2015-09-23 12:06:04