Я пытаюсь использовать avro в python для сериализации данных XML. Я могу определить необязательное кодирование полей, но как мне сделать повторяющиеся поля?

Например, с учетом этой схемы, как мне сделать любимое_число повторяющимся полем, чтобы кто-то мог иметь более одного любимого_числа?

{"namespace": "example.avro",
 "type": "record",
 "name": "User",
 "fields": [
     {"name": "name", "type": "string"},
     {"name": "favorite_number",  "type": "int"},
     {"name": "favorite_color", "type": ["string", "null"]}
 ]
}
0
anonygrits 16 Апр 2015 в 20:56

1 ответ

Лучший ответ

Из спецификации, может быть что-то вроде этого ...

# For example, a linked-list of 64-bit values may be defined with:

{
   "type": "record", 
   "name": "LongList",
   "aliases": ["LinkedLongs"],                      // old name for this
   "fields" : [
       {"name": "value", "type": "long"},             // each element has a long
       {"name": "next", "type": ["LongList", "null"]} // optional next element
   ]
}

Или вы можете использовать массив ...

# Arrays use the type name "array" and support a single attribute:
#
# items: the schema of the array's items.
# For example, an array of strings is declared with:

{"type": "array", "items": "int"}

Кроме того, вы можете вкладывать записи вот так.

0
Community 23 Май 2017 в 15:06
Вроде бы массив правильный, но бывает нескольких видов. Я нашел это и сейчас работаю над темой ... apache-avro.679487.n3.nabble.com/… Вот что у меня получилось: {"namespace": "example.avro", "type": "record", "имя": "Пользователь", "поля": [{"имя": "имя", "тип": "строка"}, {"имя": "избранное_число", "тип": {"тип": " array "," items ":" int "}}, {" name ":" favour_color "," type ": [" string "," null "]}]}
 – 
anonygrits
16 Апр 2015 в 21:43