Sto usando Gson
per serializzare/deserializzare oggetti java su json. Voglio visualizzarlo in UI
e ha bisogno di uno schema per fare una descrizione migliore. Questo mi permetterà di modificare oggetti e aggiungere più dati di quanti ce ne siano realmente.
Can Gson
fornisce lo schema JSON?
Qualche altro framework ha questa capacità?Creazione schema JSON dalla classe Java
risposta
Probabilmente la libreria Gson non contiene alcuna funzione del genere, ma puoi provare a risolvere il problema con la libreria Jackson e il modulo jackson-module-jsonSchema. Ad esempio, per le classi inferiori:
class Entity {
private Long id;
private List<Profile> profiles;
// getters/setters
}
class Profile {
private String name;
private String value;
// getters/setters
}
questo programma:
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));
}
}
Stampe di sotto dello schema:
{
"type" : "object",
"properties" : {
"id" : {
"type" : "integer"
},
"profiles" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"value" : {
"type" : "string"
}
}
}
}
}
}
Hai 2 chiavi "tipo" nell'oggetto "id"! È corretto? Puoi spiegare per favore? Grazie – thermz
Non sono sicuro del motivo per cui abbiamo questi due tipi. Devo controllare. Hai l'output simile in questo caso? Perché hai aggiornato la mia risposta? Ho messo lo schema che ho ricevuto da 'SchemaFactoryWrapper'. –
Quindi questo è un errore enorme !: lo standard JSON Schema specifica che una singola proprietà può avere ** tipi ** multipli, ma non in questo modo! Quello è corretto: * "tipo": ["numero", "intero"] *. Avere 2 chiavi nello stesso JSON è contro ogni standard! Le chiavi sono uniche. Per maggiori informazioni: http://www.jsonschema.net/ – thermz
Dai un'occhiata alla JSONschema4-mapper progetto. Con seguente configurazione:
SchemaMapper schemaMapper = new SchemaMapper();
JSONObject jsonObject = schemaMapper.toJsonSchema4(Entity.class, true);
System.out.println(jsonObject.toString(4));
si ottiene seguente schema JSON per le classi di cui Michal Ziober di 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"}
}
}
Grande biblioteca, vorrei solo lavorare con JDK 7 e non 8 come base. Tienilo a mente se dovessimo mai passare a JDK8. – Joe
- 1. Genera schema JSON dalla classe java
- 2. Generazione dello schema JSON dalla classe C#
- 3. Genera schema XML dalla classe Java (o viceversa)
- 4. JSON per classe Java
- 5. Esiste uno schema json di schema json?
- 6. Convalida dello schema JSON utilizzando java
- 7. utility per generare XSD dalla classe java
- 8. ha uno schema JSON
- 9. Creazione query query HSQL dalla classe
- 10. Creazione di JSON in java con org.json
- 11. creazione schema mongoose
- 12. Convertitori schema JSON Schema in GraphQL
- 13. Schema JSON: campo obbligatorio
- 14. Dizionario simile schema JSON
- 15. Convalida dello schema JSON
- 16. Json Schema estensione file
- 17. Come posso analizzare uno schema JSON e creare un oggetto json predefinito o generare una classe java?
- 18. Come convertire Java Swagger Annotation in Swagger json schema?
- 19. Creazione di una classe nodo in Java
- 20. Accesso a Config.groovy dalla classe Java
- 21. Esiste uno strumento per generare uno schema JSON da uno schema XML tramite Java?
- 22. Schema JSON per proprietà dinamiche
- 23. impone lo schema JSON vuoto
- 24. Libreria di convalida dello schema JSON
- 25. iOS: serializza/deserializza JSON complesso genericamente dalla classe NSObject
- 26. Json - Java Object to Json
- 27. definire uno schema con JSON-Schema e usare Mongoose?
- 28. JavaScript - Creazione dell'oggetto JSON
- 29. Java/Android: java.lang.OutOfMemoryError durante la creazione di un oggetto JSON
- 30. Come generare oggetti modello da Json Schema/Json in xcode (swift)?
Vorresti visualizzare nell'interfaccia utente? Non capisco davvero quale sia il problema. 'gson' può convertire le classi Java in formato JSON, questo è ciò che' gson' fa. – user1983983