2010-01-03 8 views
5

Tôi phải nhận cấu trúc thư của thư protobuf được chuyển cho tôi mà không có định nghĩa của thư. Sử dụng các phương thức UnknownFieldSet, tôi đã có thể nhận được một chuỗi đại diện của thông báo như sau:Cách lấy cấu trúc của thư Google Protobuf không có định nghĩa

1: "a" 
2: { 
    3:"b" 
    4:"c" 
} 

Trường dữ liệu nào cấu thành trường 2? Sử dụng UnknownFieldSet.Field.getGroupList tôi đã có thể lấy nội dung của trường 3 và 4, điều đó có nghĩa là trường 2 có cấu trúc nhóm "không được chấp nhận" không?

Trả lời

3

Nếu bạn đã đăng dữ liệu nhị phân thô, chúng tôi có thể cho bạn biết - hoặc bạn có thể xem protocol buffer encoding documentation. Nếu bạn thấy một trường có loại dây là 3, nghĩa là một nhóm.

Tôi không quen thuộc với API UnknownFieldSet như tôi có thể nên, nhưng có vẻ như bạn đang giao dịch với một nhóm.

Mặt khác, tôi mong đợi hầu hết việc sử dụng các nhóm phải nằm trong Google - dữ liệu này đến từ đâu? Phải thừa nhận rằng không có gì để dừng người sử dụng định dạng nhóm phản đối thay vì thông điệp nhúng là, nhưng tôi sẽ hy vọng mà ít được làm như vậy ...

Có bất cứ lý do bạn không thể yêu cầu các .proto tập tin có liên quan? Trong khi một số thông tin chắc chắn có thể được thu thập từ bộ đệm giao thức mà không có định nghĩa của chúng, chúng thực sự được thiết kế để sử dụng trong trường hợp cả hai kết thúc làm biết định dạng thư - mặc dù có thể có các phiên bản khác nhau.

+0

cảm ơn, đó thực sự là một nhóm. – dqminh