Frage Gibt es eine Möglichkeit, ein JSON-Schema aus einer Scala-Fallklassenhierarchie zu bekommen?


Ich dokumentiere eine interne REST-API, die in Scala geschrieben wurde, leider können wir Swagger nicht integrieren, deshalb fahren wir vorerst mit einer Inhouse-Lösung für den Dokumentengenerator. Ich möchte ein JSON-Schema generieren, um zu zeigen, wie die Antwort beim Abrufen unserer Ressourcen ist. Ich frage mich nur, ob es eine Abkürzung gibt, um dies zu tun, indem ich die bereits modellierten Fallklassen ausnutze.


5
2018-05-27 20:08


Ursprung


Antworten:


Das Autoschema Projekt kann JSON-Schema aus Scala-Fallklassen exportieren. Sie können es wie folgt verwenden:

case class MyType(myValue: Int)
AutoSchema.createSchema[MyType]

Das Maven - Artefakt scheint nicht mehr verfügbar zu sein, aber es ist ein SBT - Projekt, das auf Github verfügbar ist, so dass du entweder die Quellen kopieren, ein Glas bauen oder es als Abhängigkeit mit SBT hinzufügen kannst build.sbt folgende:

lazy val autoschemaProject =
  ProjectRef(uri("https://github.com/coursera/autoschema.git"), "autoschema")

lazy val root = (project in file(".")).dependsOn(autoschemaProject)

Ich habe das mit SBT 0.13.7 getestet. Beachten Sie, dass Autoschema seine eigenen Abhängigkeiten hat (hauptsächlich play-json 2.3.2) Sie müssen möglicherweise ihre Versionen ändern, um Versionskonflikte mit Ihren eigenen Projektabhängigkeiten zu vermeiden.


3
2018-06-25 20:10



Wie @mzicard sagt, Autoschema ist der Weg zu gehen. Es ist jedoch eine Weile her, seit es einige Aktivitäten im Haupt-Repository gab. Ich habe etwas Zeit gebraucht, um es zu verzweigen und seine Abhängigkeiten und veralteten Code zu aktualisieren (Arbeit, die in anderen Gabeln gemacht wurde, ich habe es einfach kombiniert). Es ist jetzt in Maven Central unter meiner Gabel veröffentlicht:

https://github.com/sauldhernandez/autoschema

Sie können es verwenden, indem Sie dies einfügen build.sbt:

libraryDependencies += "com.sauldhernandez" %% "autoschema" % "1.0.0"


1
2018-06-29 18:35