2016-10-12 9 views
1

У меня есть следующий объект JSON данные:как правильно преобразовать Avro схемы в JSon схеме

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

Схема JSON для этого объекта выглядит следующим образом:

{ 
    "$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"] 
} 

Я могу использовать эту схему в формате JSON, чтобы проверить, соответствует ли мой объект данных к нему:

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); 
    } 

в моей Java-приложение, я получаю соответствующие AVRO схемы для этого объекта из API вызова REST, и что схема выглядит следующим образом:

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

Есть общепринятый способ преобразования такой схемы AVRO в JSON схему?

+0

Знаете ли вы, что https://github.com/fge/json-schema-avro? –

+0

Я внимательно посмотрю. благодаря! –

+0

Последний раз, когда это было сделано, было 2014. Я думаю, что это не поддержит проект схемы Json v4. Также я бы не использовал проекты не обновляемые> 12 месяцев. – hiaclibe

ответ

0
  1. Скачать: avro-tools-1.7.4.jar (или последняя версия from repository)
  2. Пробег: java -jar avro-tools-1.7.4.jar tojson avro-filename.avro>output-filename.json

Это будет create output-filename.json файл со всеми данными. Если output-filename.json уже существует, он переопределит его.

 Смежные вопросы

  • Нет связанных вопросов^_^