Mamy ten szkic schematu JSON . Chciałbym pobrać próbkę moich danych JSON i wygenerować szkielet schematu JSON, który mogę przerobić ręcznie, dodając takie rzeczy, jak opis, wymagane itp., Które nie mogą być wywnioskowane z konkretnych przykładów.
Na przykład z mojego wejścia example.json
:
{
"foo": "lorem",
"bar": "ipsum"
}
Uruchomiłbym moje narzędzie json_schema_generator i uzyskałbym:
{ "foo": {
"type" : "string",
"required" : true,
"description" : "unknown"
},
"bar": {
"type" : "string",
"required" : true,
"description" : "unknown"
}
}
Ten przykład został zakodowany ręcznie, więc może zawiera błędy. Czy jest jakieś narzędzie, które mogłoby mi pomóc w konwersji schematu JSON -> JSON?
json
validation
reflection
jsonschema
blueFast
źródło
źródło
Odpowiedzi:
Być może szukasz tego:
http://www.jsonschema.net
Jest to narzędzie online, które może automatycznie generować schemat JSON z ciągu JSON. I możesz łatwo edytować schemat.
źródło
{"hello": "world","num": 42}
ale wygląda obiecującoPodsumowując pozostałe odpowiedzi, oto proponowane do tej pory generatory schematów JSON:
Online:
Pyton:
NodeJS:
Rubin:
źródło
setup.py
GenSON ( PyPI | Github ) to generator schematów JSON, który może generować pojedynczy schemat z wielu obiektów. Możesz także scalać z nim schematy. Został napisany w Pythonie i zawiera narzędzie CLI.
(Pełne ujawnienie: jestem autorem.)
źródło
Widząc, że to pytanie zbiera sporo głosów, dodaję nowe informacje (nie jestem pewien, czy jest to nowe, ale nie mogłem go wtedy znaleźć)
źródło
Po kilku miesiącach najlepszą odpowiedzią jest moje proste narzędzie. Jest surowy, ale funkcjonalny.
Co chcę jest coś podobnego do tego . Dane JSON mogą stanowić szkielet schematu JSON. Nie zaimplementowałem go jeszcze, ale powinno być możliwe podanie istniejącego schematu JSON jako podstawy, aby istniejący schemat JSON plus dane JSON mógł wygenerować zaktualizowany schemat JSON. Jeśli nie podano takiego schematu jako dane wejściowe, przyjmowane są całkowicie domyślne wartości.
Byłoby to bardzo przydatne w programowaniu iteracyjnym: przy pierwszym uruchomieniu narzędzia schemat JSON jest fikcyjny, ale można go dopracować automatycznie zgodnie z ewolucją danych.
źródło
Istnieje narzędzie Pythona do generowania schematu JSON dla danego JSON: https://github.com/perenecabuto/json_schema_generator
źródło
draft-03
.generate-schema
( NPM | Github ) pobiera obiekt JSON generujący z niego schematy, jedno wyjście to schemat JSON, jest napisane w Node.js i jest dostarczane z narzędziem REPL i ClI do przesyłania plików do.Pełne ujawnienie: jestem autorem :)
źródło
Istnieje narzędzie nodejs, które obsługuje schemat json v4 na https://github.com/krg7880/json-schema-generator
Działa jako narzędzie wiersza poleceń lub jako biblioteka nodejs:
źródło
json-schema-generator to zgrabny generator schematów JSON oparty na Ruby. Obsługuje zarówno wersję roboczą 3, jak i 4 schematu JSON. Może być uruchamiany jako samodzielny plik wykonywalny lub może być osadzony w skrypcie Ruby.
Następnie możesz użyć schematu json-schema do sprawdzenia poprawności próbek JSON względem nowo wygenerowanego schematu, jeśli chcesz.
źródło
W przypadku narzędzi offline, które obsługują wiele wejść, najlepszym, jakie do tej pory widziałem, jest https://github.com/wolverdude/GenSON/ Chciałbym zobaczyć narzędzie, które przyjmuje nazwy plików na standardowe wejście, ponieważ mam tysiące plików . Jednak zabrakło mi otwartych deskryptorów plików, więc upewnij się, że pliki są zamknięte . Chciałbym również zobaczyć generatory schematów JSON, które obsługują rekursję. Obecnie pracuję nad generowaniem klas Java z obiektów JSON w nadziei, że z moich klas Java przejdę do schematu JSON. Oto mój skrypt GenSON, jeśli jesteś ciekawy lub chcesz zidentyfikować w nim błędy.
źródło
Wspomniano o wielu narzędziach, ale jeszcze jeden o nazwie wnioskujący o schemacie JSON dla rekordu:
https://github.com/rnd0101/json_schema_inferencer
(to nie jest biblioteka ani produkt, ale skrypt w Pythonie)
Ze zwykłym pełnym ujawnieniem: jestem autorem.
źródło
Dla node.js> 6.0.0 istnieje również moduł json-schema-by-example .
źródło