Ich verwende zu serialisieren/deserialize Java-Objekte zu JSON. Ich möchte es in anzeigen und benötigt ein Schema, um eine bessere Beschreibung zu machen. Dadurch kann ich Objekte bearbeiten und mehr Daten hinzufügen, als sie tatsächlich sind.
Kann JSON-Schema zur Verfügung stellen?
Hat ein anderes Framework diese Fähigkeit?Erstellen Sie JSON-Schema von Java-Klasse
Antwort
Gson Bibliothek enthält wahrscheinlich keine Funktion wie diese, aber Sie können versuchen, Ihr Problem mit Jackson Bibliothek und jackson-module-jsonSchema Modul zu lösen. Zum Beispiel für unter Klassen:
class Entity {
private Long id;
private List<Profile> profiles;
// getters/setters
}
class Profile {
private String name;
private String value;
// getters/setters
}
dieses Programm:
import java.io.IOException;
import java.util.List;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;
public class JacksonProgram {
public static void main(String[] args) throws IOException {
ObjectMapper mapper = new ObjectMapper();
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
mapper.acceptJsonFormatVisitor(Entity.class, visitor);
JsonSchema schema = visitor.finalSchema();
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(schema));
}
}
Drucke unter Schema:
{
"type" : "object",
"properties" : {
"id" : {
"type" : "integer"
},
"profiles" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"value" : {
"type" : "string"
}
}
}
}
}
}
Sie haben 2 "type" Schlüssel in "id" -Objekt! Ist es richtig? Kannst du bitte Erklären? Danke – thermz
Ich bin nicht sicher, warum wir diese zwei Arten haben. Ich muss überprüfen. Hast du in diesem Fall die gleiche Ausgabe? Warum hast du meine Antwort aktualisiert? Ich stelle ein Schema, das ich von 'SchemaFactoryWrapper' erhalten habe. –
Dann ist das ein großer Fehler !: der JSON-Schema-Standard spezifiziert, dass eine einzelne Eigenschaft ** mehrere ** Typen haben kann, aber nicht auf diese Weise! Das ist die richtige: * "type": ["number", "integer"] *. Mit 2 Schlüsseln im selben JSON ist gegen jeden Standard! Schlüssel sind einzigartig. Für weitere Informationen: http://www.jsonschema.net/ – thermz
Hier finden Sie aktuelle JSONschema4-mapper Projekt. Mit folgenden Setup:
SchemaMapper schemaMapper = new SchemaMapper();
JSONObject jsonObject = schemaMapper.toJsonSchema4(Entity.class, true);
System.out.println(jsonObject.toString(4));
Sie erhalten folgende JSON Schema für die Klassen in Michal Ziober des erwähnten answer to this question:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"additionalProperties": false,
"type": "object",
"definitions": {
"Profile": {
"additionalProperties": false,
"type": "object",
"properties": {
"name": {"type": "string"},
"value": {"type": "string"}
}
},
"long": {
"maximum": 9223372036854775807,
"type": "integer",
"minimum": -9223372036854775808
}
},
"properties": {
"profiles": {
"type": "array",
"items": {"$ref": "#/definitions/Profile"}
},
"id": {"$ref": "#/definitions/long"}
}
}
Große Bibliothek, wünschte nur, ich würde mit JDK 7 und nicht 8 als Basis arbeiten. Denken wir daran, sollten wir jemals zu JDK8 wechseln. – Joe
- 1. jsonSchema Attribut erforderlich bedingt
- 2. Wie beschreibt man diese Validierungsanforderung in jsonschema?
- 3. jsonschema mehrere Werte für String-Eigenschaft
- 4. @JsonPropertyOrder nicht mit jackson-module-jsonSchema
- 5. Erstellen Sie UiImage von NSData
- 6. Wordpress - So erstellen Sie benutzerdefinierte Beitragstyp ohne Erstellen von Seite
- 7. Erstellen Sie PHP-Array von MySQL Spalte
- 8. Erstellen Sie eine JSON-Zeichenfolge von NSArray
- 9. Erstellen Sie einen Prozess von einem Treiber
- 10. Erstellen Sie eine Liste von Objekten C#
- 11. Java. Erstellen Sie Thrift-Objekt von JSON
- 12. Erstellen Sie JAR-Datei von openfire Plugin
- 13. Erstellen Sie Tabellenzeilen von 4 in Schienen
- 14. Erstellen Sie eine Rotationsmatrix von 2 Normalen
- 15. Erstellen Sie msgbox beim Ausführen von Batch
- 16. Erstellen Sie eine DLL von HEX-Code
- 17. So erstellen Sie ein Dreieck von DIV
- 18. Erstellen Sie eine Golang-Karte von Listen
- 19. Erstellen Sie eine herunterladbare Anlage von JavaScript?
- 20. Erstellen Sie eine modifizierte HFONT von HFONT
- 21. Benötigen Sie Hilfe zum Erstellen von preg_replace_callback
- 22. Erstellen Sie eine Funktion von einem anderen
- 23. Erstellen Sie Schienen Formularfelder von zugeordneten Modellen
- 24. Erstellen Sie eine Liste von Artefakten, die
- 25. So erstellen Sie caffe.deploy von train.prototxt
- 26. So erstellen Sie PPM-Pakete von CPAN
- 27. Erstellen Sie einen Wählton von 56k Modem
- 28. Erstellen Sie eine UIImage von zwei UIImageView
- 29. Erstellen Sie ein Glas von MoPub sdk
- 30. Was verwenden Sie zum Erstellen von Flussdiagrammen?
Was möchten Sie in UI angezeigt werden? Ich verstehe nicht wirklich, was das Problem ist. 'gson' kann Java-Klassen in JSON-Format konvertieren, das ist' gson'. – user1983983