2013-05-23 3 views

Odpowiedz

4

Tak, można użyć C komentarzy w schemacie Avro JSON: /* something */ or // something
narzędzia Avro ignoruje tych wyrażeń podczas parsowania.
EDIT: Działa tylko z Java API.

+0

ta nie działa dla mnie. Jeśli wstawię albo styl komentarzy (/ **/lub //) do pliku JSON, pojawia się błąd: "Nie można przeanalizować ani skompilować schematu: nieoczekiwany znak w jsonie 2f". Próbowałem umieścić oba style komentarzy w kilku miejscach w pliku. – jfritz42

+0

Sugeruję, że kiedykolwiek skompilowałeś swój schemat bez komentarzy i to działa. Sprawdź następujące rzeczy: najnowszą wersję avro-tools, upewnij się, że kompiluje Twój schemat (za pomocą narzędzi avro lub [walidatora Json] (http://jsonlint.com/)). Dla twojej informacji komentarze działają dobrze dla całego mojego schematu avro ... –

+0

Używam wersji 1.7.4, która jest najnowszą wersją. Myślę, że problem może polegać na tym, że używamy teraz wersji C++ i korzystasz z wersji Java. Przepraszam, że pominięto ten szczegół w moim pytaniu. – jfritz42

2

Nie, nie może być w C++ ani w wersji C# (od wersji 1.7.5). Jeśli spojrzysz na kod, po prostu wpychasz JSON do parsera JSON bez wstępnego przetwarzania komentarzy - dziwaczny styl programowania. Dokumentacja i obsługa języków wydaje się być dość niechlujna ...

2

Tak, ale jest ograniczona. W schemacie Avro typy danych "record", "enum" i "fixed" pozwalają na pole "doc" zawierające dowolny ciąg dokumentacji. Na przykład:

{"type": "record", "name": "test.Weather", 
"doc": "A weather reading.", 
"fields": [ 
    {"name": "station", "type": "string", "order": "ignore"}, 
    {"name": "time", "type": "long"}, 
    {"name": "temp", "type": "int"} 
] 
} 

Od https://github.com/apache/avro/blob/33d495840c896b693b7f37b5ec786ac1acacd3b4/share/test/schemas/weather.avsc#L2