2016-10-12 5 views
1

zu konvertieren habe ich folgendes json Datenobjekt:, wie man richtig Avro-Schema in ein Schema json

{ 
    "name": "John", 
    "favorite_number": 5, 
    "favorite_color" : "green" 
} 

Das JSON Schema für dieses Objekt sieht wie folgt aus:

{ 
    "$schema": "http://json-schema.org/draft-04/schema#", 
    "title": "Person", 
    "description": "some description", 
    "type": "object", 
    "properties": { 
     "name": { 
      "description": "name", 
      "type": "string" 
     }, 
     "favorite_number": { 
      "type": "number", 
     }, 
     "favorite_color": { 
      "type": "string", 
     }, 
    }, 
    "required": ["name", "favorite_number","favorite_color"] 
} 

ich in der Lage bin zu Mit diesem JSON Schema, zu überprüfen, ob mein Datenobjekt es entspricht:

public static boolean isJsonValid(String schemaText, String jsonText) throws ProcessingException, IOException 
    { 
     final JsonSchema schemaNode = getSchemaNode(schemaText); 
     final JsonNode jsonNode = getJsonNode(jsonText); 
     return isJsonValid(schemaNode, jsonNode); 
    } 

In meiner Java-Anwendung, ich erhalte eine AVRO Schema für dieses Objekt aus einem REST-API-Aufruf entspricht, und dass Schema sieht wie folgt aus:

{ 
"namespace": "example.avro", 
"type": "record", 
"name": "Person", 
"fields": [ 
    {"name": "name", "type": "string"}, 
    {"name": "favorite_number", "type": ["int", "null"]}, 
    {"name": "favorite_color", "type": ["string", "null"]} 
] 
} 

Gibt es eine allgemein akzeptable Art und Weise solches AVRO-Schema in ein JSON-Schema zu konvertieren?

+0

Ist Ihnen https://github.com/fge/json-schema-avro bekannt? –

+0

Ich werde genau hinsehen. Vielen Dank! –

+0

Das letzte Mal, dass dies beibehalten wurde, war 2014. Ich denke, dies wird JSON Schema Draft v4 nicht unterstützen. Ich würde auch keine Projekte verwenden, die nicht> 12 Monate aktualisiert wurden. – hiaclibe

Antwort

0
  1. Download: avro-tools-1.7.4.jar (oder die neueste Version from repository)
  2. Run: java -jar avro-tools-1.7.4.jar tojson avro-filename.avro>output-filename.json

Dies wird create output-filename.json Datei mit allen Daten. Wenn output-filename.json bereits existiert, wird es überschrieben.