¿Hay una biblioteca python para convertir un esquema JSON en una definición de clase python, similar a jsonschema2pojo - https://github.com/joelittlejohn/jsonschema2pojo - para Java?Convierta un esquema JSON en una clase python
Respuesta
Hasta ahora lo más parecido que he podido encontrar es warlock, que anuncia este flujo de trabajo:
Construir el esquema de
>>> schema = {
'name': 'Country',
'properties': {
'name': {'type': 'string'},
'abbreviation': {'type': 'string'},
},
'additionalProperties': False,
}
crear un modelo
>>> import warlock
>>> Country = warlock.model_factory(schema)
Crea un objeto usando tu modo l
>>> sweden = Country(name='Sweden', abbreviation='SE')
Sin embargo, no es tan fácil. Los objetos que produce Brujo carecen en gran medida de golosinas introspectibles. Y si es compatible con dicts anidados en la inicialización, no pude averiguar cómo hacer que funcionen.
Para dar un poco de antecedentes, el problema en el que estaba trabajando era cómo tomar Chrome's JSONSchema API y generar un árbol de generadores de solicitudes y controladores de respuestas. Warlock no parece estar demasiado lejos de la realidad, el único inconveniente es que las metaclases en Python no se pueden convertir realmente en 'código'.
Otros módulos útiles para buscar:
- jsonschema - (que Warlock se construye en la parte superior de)
- valideer - similar a jsonschema pero con un nombre peor.
- bunch - Un constructor estructura interesante eso es la mitad de camino entre a dotdict y construct
Si al final de encontrar una buena solución única para este siga su pregunta - Me encantaría encontrar uno. Me serví github, pypi, googlecode, sourceforge, etc. Y no pude encontrar nada realmente sexy.
Por falta de soluciones prefabricadas, probablemente improvisaré algo con Warlock. Entonces, si te gano, actualizaré mi respuesta. : P
Ídem en el seguimiento. Pasé por las mismas fuentes y no pude encontrar ninguna solución aceptable. Incluso bifurqué a warlock y comencé a trabajar en la implementación de la recursión en su definición de clase (que parece que debería ser bastante fácil), pero me rendí. –
python-jsonschema-objects es una alternativa a brujo, construir en la parte superior de jsonschema
python-jsonschema-objetos proporciona una basada en la clase automática unión a esquemas JSON para su uso en pitón.
Uso: Esquema
Muestra Json
schema = '''{
"title": "Example Schema",
"type": "object",
"properties": {
"firstName": {
"type": "string"
},
"lastName": {
"type": "string"
},
"age": {
"description": "Age in years",
"type": "integer",
"minimum": 0
},
"dogs": {
"type": "array",
"items": {"type": "string"},
"maxItems": 4
},
"gender": {
"type": "string",
"enum": ["male", "female"]
},
"deceased": {
"enum": ["yes", "no", 1, 0, "true", "false"]
}
},
"required": ["firstName", "lastName"]
} '''
la conversión del objeto de esquema para la clase
import python_jsonschema_objects as pjs
builder = pjs.ObjectBuilder(schema)
ns = builder.build_classes()
Person = ns.ExampleSchema
james = Person(firstName="James", lastName="Bond")
james.lastName
u'Bond' james
example_schema lastName=Bond age=None firstName=James
Validación:
james.age = -2 python_jsonschema_objects.validators.ValidationError: -2 was less or equal to than 0
Pero el problema es que todavía está usando draft4validation mientras jsonschema se ha movido sobre draft4validation, archivé número en el repositorio al respecto. A menos que esté usando la versión anterior de jsonschema, el paquete anterior funcionará como se muestra.
- 1. Python: Convierta JSON (devuelto por una URL) en la Lista
- 2. Convierta JSON a CSV
- 3. Python: Convierta una cadena en un entero
- 4. Convierta datos json en una tabla html
- 5. tiene JSON un esquema
- 6. Python: Convierta una lista de diccionarios de Python en una matriz de objetos JSON
- 7. Convierta objeto en cadena JSON
- 8. Convierta un shapefile (.shp) a xml/json
- 9. Convierta una cadena al código en el Esquema
- 10. Convierta la matriz JSON a la lista Python
- 11. ¿Cómo puedo analizar un esquema JSON y crear un objeto json predeterminado o generar una clase java?
- 12. Convierta .json a .csv en ruby
- 13. Validación de esquema JSON
- 14. Cómo escribir un esquema JSON para una matriz de objetos?
- 15. imponer el esquema JSON vacío
- 16. Convierta una cadena en entero con decimal en Python
- 17. Convierta datos de una tabla HTML en un objeto JSON en jQuery
- 18. Convierta cadena en valor ASCII python
- 19. Convierta np.ndarray a np.array en python
- 20. Powershell: Convierta un objeto en una cadena
- 21. Convierta un hash en una estructura
- 22. Convierta un proyecto completo en una DLL
- 23. Emacs para la programación de Python: módulo/clase esquema/navegador
- 24. Generar esquema de Json a partir del esquema XML (XSD)
- 25. ¿Hay alguna herramienta para generar un esquema JSON desde un esquema XML a través de Java?
- 26. Convierta lift-json JValue en MongoDBObject usando Casbah?
- 27. Generar clases C# del esquema JSON
- 28. Parse JSON en Python
- 29. Convierta un objeto a una cadena XML
- 30. Validación de esquema JSON usando java
¿Puede explicar por qué la funcionalidad del módulo de biblioteca estándar [json] (http://docs.python.org/library/json.html) no es suficiente para sus necesidades y necesita las definiciones de clase generadas? –
La respuesta a su comentario es bastante simple: trabajar con diccionarios sin procesar es una gestión de objetos de segunda clase y a la mayoría de las personas no les gusta la ráfaga de escopeta de soporte rizado en la cara que proporciona JSON. – synthesizerpatel