2013-05-23 28 views
6

Tôi đang viết lược đồ Avro đầu tiên, sử dụng JSON làm ngôn ngữ lược đồ. Tôi biết bạn không thể đưa bình luận vào JSON thuần túy, nhưng tôi tự hỏi liệu công cụ Avro có cho phép bình luận không. Ví dụ. Có lẽ nó cắt chúng (giống như một bộ tiền xử lý) trước khi phân tích cú pháp JSON.Bạn có thể đặt chú thích trong các tệp lược đồ JSON của Avro không?

Chỉnh sửa: Tôi đang sử dụng toolchain C++ Avro

Trả lời

4

Có, bạn có thể sử dụng C bình luận trong một lược đồ Avro JSON: /* something */ or // something
cụ Avro bỏ qua các biểu thức trong phân tích cú pháp.
EDIT: Chỉ hoạt động với API Java.

+0

này không làm việc cho tôi. Nếu tôi đặt kiểu nhận xét (/ **/hoặc //) vào tệp JSON, tôi gặp lỗi: "Không thể phân tích cú pháp hoặc biên dịch giản đồ: Ký tự không mong muốn trong json 2f". Tôi đã thử đặt cả hai kiểu nhận xét ở một vài nơi trong tệp. – jfritz42

+0

Tôi đề nghị bạn đã từng biên soạn lược đồ của mình mà không có các bình luận và nó hoạt động. Kiểm tra những điều sau: phiên bản mới nhất của công cụ avro-tools, hãy chắc chắn rằng lược đồ của bạn biên dịch (với các công cụ avro hoặc [Json validator] (http://jsonlint.com/)). Đối với thông tin của bạn, ý kiến ​​làm việc tốt cho tất cả các lược đồ avro của tôi ... –

+0

Tôi đang sử dụng 1.7.4 là bản phát hành mới nhất. Tôi nghĩ rằng vấn đề có thể là chúng tôi đang sử dụng phiên bản C++ ngay bây giờ và bạn đang sử dụng phiên bản Java. Xin lỗi vì đã để lại chi tiết đó trong câu hỏi của tôi. – jfritz42

2

Không, nó không thể trong phiên bản C++ hoặc C# (như 1.7.5). Nếu bạn nhìn vào mã, họ chỉ cần đưa JSON vào trình phân tích cú pháp JSON mà không có bất kỳ tiền xử lý chú thích nào - kiểu lập trình kì lạ. Tài liệu và hỗ trợ ngôn ngữ dường như khá cẩu thả ...

2

Có, nhưng nó bị giới hạn. Trong lược đồ, các loại dữ liệu Avro 'record', 'enum', và 'fixed' cho phép một trường 'doc' có chứa một chuỗi tài liệu tùy ý. Ví dụ:

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

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

Các vấn đề liên quan